変更を取得するためのオプション
これらのコマンドはリモート リポジトリとやりとりするときに非常に便利です。 clone
と fetch
はリポジトリのリモート URL からローカル コンピューターにリモート コードをダウンロードし、merge
は異なる人の作業と自分のものを一緒にマージするために使い、pull
は fetch
と merge
を組み合わせたものです。
リポジトリをクローンする
他のユーザーのリポジトリの完全なコピーを取得するには、git clone
を次のように使います。
$ git clone https://ホスト名/USERNAME/REPOSITORY.git
# Clones a repository to your computer
リポジトリをクローンするときに、複数の異なる URL から選びます。 GitHubにログインした状態である間は、これらの URL はリポジトリの詳細の下に表示されます:
git clone
を実行すると、次のアクションが発生します。
repo
という新しいフォルダーが作成される- Git リポジトリとして初期化される
- クローン元の URL を指す
origin
という名前のリモートが作成される - リポジトリのファイルとコミットすべてがそこにダウンロードされる
- デフォルトブランチがチェックアウトされる
リモート リポジトリの各ブランチ foo
について、対応するリモート追跡ブランチ refs/remotes/origin/foo
がローカル リポジトリに作成されます。 このようなリモート追跡ブランチの名前は、通常 origin/foo
と省略できます。
リモートリポジトリから変更をフェッチする
他のユーザーが行った新しい作業を取得するには、git fetch
を使います。 リポジトリからフェッチすると、すべての新しいリモート追跡ブランチとタグが取得され、かつ、それらの変更は自分のブランチへマージ されません。
目的のプロジェクト用にリモート URL が設定されたローカル リポジトリが既にある� �合、ターミナルで git fetch *remotename*
を使うことで、すべての新しい情� �を取得できます。
$ git fetch remotename
# Fetches updates made to a remote repository
それ以外の� �合は、常に新しいリモートを追� してからフェッチできます。 詳細については、「リモート リポジトリを管理する」を参照してく� さい。
ローカルブランチに変更をマージする
マージとは、あなたのローカルでの変更を他のユーザによる変更と結合させる処理です。
通常、リモート追跡ブランチ (リモートリポジトリからフェッチされたブランチ) をローカルのブランチとマージします。
$ git merge remotename/branchname
# Merges updates made online with your local work
リモートリポジトリから変更をプルする
git pull
は、git fetch
と git merge
の両方を同じコマンドで完了させる便利なショートカットです。
$ git pull remotename branchname
# Grabs online updates and merges them with your local work
pull
は、取得された変更のマージを実行するため、pull
コマンドの実行前にローカルの作業がコミットされていることを確認する必要があります。 マージ コンフリクトが発生しても解決できない� �合、またはマージを中止する� �合、git merge --abort
を使ってブランチをプルする前の状態に戻すことができます。
参考資料
- Pro Git ブックの「Working with Remotes (リモートでの作業)」