GitHubの既存リポジトリをローカルPCに"clone(複製)"する方法とローカルPC上で作成したコミットを同期する方法について解説します。
「GitHub 入門 ~アカウントを作成する方法~」では、GitHubのアカウントとリモートリポジトリの「TestProjectリポジトリ」を作成しました。GitHubのアカウントを作成していない方はこちらのページを参考にGitHubのアカウントと新規リポジトリを作成します。また、ローカルPCに「Git」をインストールしていない場合は、「
WindowsにGitをインストールする方法」を参考に「Git」をインストールして下さい。
目次
1. "clone"とは?
"clone(クローン)"とは、「データなどをそっくりそのままコピー(複製)すること」です。Gitの"clone"コマンドを実行すると、リモートリポジトリと同じ環境をローカルのPC上に作成(複製)する事ができます。バージョンの管理履歴も一緒に複製されますので、ブランチの作成やコミットなどを、ローカルの環境で行うことが可能になります。
2. リモートリポジトリの確認
GitHub(https://github.com/)にログインして、新規にリポジトリを作成する場合は、「Initialize this repository with a README」にチェックを入れてリポジトリを作成して下さい。チェックを入れると、リポジトリの初期化とコミット済の「README.md」ファイルが作成されます。
●Create a new repository
ここでは、「GitHub 入門 ~アカウントを作成する方法~」で作成した「TestProject」リポジトリを使ってローカルPCへclone(複製)します。GitHubにログインしてリポジトリの詳細ページを確認してみましょう。
GitHub(https://github.com/)にログインすると右下に、作成したリポジトリの一覧が表示されますので"clone"するリポジトリをクリックして「Code」のページを表示します。
●TestProjectリポジトリ
緑色の「Clone or download」ボタンをクリックして下さい。
●Clone or download
「TestProject」リポジトリのURLが記載されています。URL右のコピーボタンをクリックしてクリップボードにコピーして下さい。ローカルPCの「Git」での作業に使いますので、メモ帳かどこかに控えておきます。
3. ローカルPCで"clone"コマンドを実行する
ローカルPCの任意の場所に作業用フォルダーの「Git-test」フォルダーを作成します。フォルダー内で右クリックをして「Git Bash」を起動します。
●「Git Bash」の起動
「Git Bash」のプロンプトに、
git clone [リモートリポジトリのURL]
を入力して「Enter」キーを押します。 [リモートリポジトリのURL]は先ほどGitHubの「Clone or download」ボタンで確認したURLになります。サンプルのURLは「https://github.com/Internous-testusr/TestProject.git」ですが、”Internous-testusr/TestProject.git”は自身で作成したアカウント名とリポジトリ名になります。
●[git clone]
UserName@ComputerName MINGW64 ~/Documents/Git-test
$ git clone https://github.com/Internous-testusr/TestProject.git
Cloning into 'TestProject'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Unpacking objects: 100% (3/3), done.
「Git-test」フォルダー内に"clone"された「TestProject」フォルダーが作成されました。「Bash」コマンドでフォルダーを変更して、ステイタスを確認してみましょう。
●「TestProject」フォルダーの移動とファイルの確認
UserName@ComputerName MINGW64 ~/Documents/Git-test (master) $ cd TestProject/ UserName@ComputerName MINGW64 ~/Documents/Git-test/TestProject (master) $ ls -a ./ ../ .git/ README.md
[cd]コマンドで「TestProject」フォルダーに移動します。[ls]コマンドでフォルダーの中身を確認すると、リモートリポジトリと同じ「README.md」ファイルがあるのを確認する事ができました。「.git」フォルダーはGitの管理フォルダーになります。
●[git status]
UserName@ComputerName MINGW64 ~/Documents/Git-test (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
「git status」コマンドを実行すると(master)ブランチ上で履歴管理が出来る状態になっているのが分かります。リモートリポジトリを"clone"コマンドで複製する事で、ローカルPCでも、リモートリポジトリと同じ環境で作業ができます。
4. ローカルリポジトリでファイルを追加(add)する
それでは、"clone"コマンドで複製した「TestProject」リポジトリにファイルを追加してみましょう。新規ファイルの「git-test.txt」ファイルをローカルPC上の「TestProject」フォルダーに追加します。
●git-test.txt
「git status」コマンドでリポジトリの状態を確認してみると、未追跡のファイルとして、「git-test.txt」ファイルが表示されます。
●[git status]
UserName@ComputerName MINGW64 ~/Documentst/TestProject (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add
git-test.txt
nothing added to commit but untracked files present (use "git add" to track)
ローカルリポジトリの(master)ブランチ上で、作業を継続する事ができますので、新規ファイルをステージング・エリアに登録(add)します。
●[git add]
UserName@ComputerName MINGW64 ~/Documentst/TestProject (master)
$ git add -A
追跡対象のファイルをコミット(commit)します。
●[git commit]
UserName@ComputerName MINGW64 ~/Documentst/TestProject (master)
$ git commit -m "local commit MSG"
[master e5ff4ee] local commit MSG
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 git-test.txt
ローカルでの変更履歴が追加されました。「git log」で管理履歴を確認してみます。
●[git log]
UserName@ComputerName MINGW64 ~/Documentst/TestProject (master)
$ git log
commit e5ff4eedac40da4cafb8f9f8e5733285cf0afc15
Author: Taro Yamada
Date: Fri Apr 21 12:33:23 2017 +0900
local commit MSG
commit cf3a52d2bab44a85a053a4c65199161c27ea8127
Author: Internous-testusr
Date: Fri Apr 14 07:47:41 2017 +0900
Initial commit
「Internous-testusr」がリモートで作成したコミット(cf3a52d)リポジトリに「Taro Yamada」がローカルで作成したコミット(e5ff4ee)が追加されました。
5. ローカルの変更履歴をリモートリポジトリに反映(git push)する
「git push」コマンドを使うと、ローカルで追加したファイルのコミット情報を「GitHub」のリモートリポジトリに反映する事ができます。GitHubにログインをして、現在のTestProjectの状態を確認すると、初期コミット時の「README.md」ファイルのみがある状態です。
コミット(commit)した後に「git status」でステイタスを確認してみると「Your branch is up-to-date with 'origin/master'.」とあります。リモートリポジトリからローカルPCに"clone"した時は、「git clone [リモートリポジトリのURL]」を指定しましたが、ローカルのリポジトリを同期させる際には、URLを指定しなくても「origin」というShortNameを指定する事で、ローカルの(master)ブランチのコミットをリモートリポジトリに反映させることが可能です。
●[git log]
UserName@ComputerName MINGW64 ~/Documentst/TestProject (master)
$ git push origin master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 286 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/Internous-testusr/TestProject.git
cf3a52d..e5ff4ee master -> master
●localコミットの追加
「GitHub」のリポジトリを確認してみると、ローカルPC上で作成・コミット(commit)した「git-test.txt」が同期されています。
【関連文書】
WindowsにGitをインストールする方法
【関連文書】
Git for Windows の使い方 ~準備編~
【関連文書】
Git の使い方 ~リポジトリの作成とコミット~
【関連文書】
Git の使い方 ~リポジトリへ変更内容を記録する方法~
【関連文書】
git add の取り消し方法
【関連文書】
git コマンド ~コミットの取り消し~
【関連文書】
Gitでブランチを作成する方法
【関連文書】
Git - ブランチを削除する方法