git fetch でリモートの変更を取得する
このステップでは、リモートの Git リポジトリから変更を取得する方法を学びます。他の人と共同作業をしており、彼らがプロジェクトに変更を加えたと想像してみてください。git fetch
は、それらの変更をローカルマシンにダウンロードするが、現在の作業にマージしないために使用するコマンドです。
まず、リモートリポジトリを持っている状況をシミュレートしましょう。デモンストレーションのために、ローカルで簡単なリポジトリを作成します。
cd ~/project
mkdir remote-repo
cd remote-repo
git init --bare
これにより、「ベア」リポジトリが作成されます。これは通常、中央のリモートリポジトリとして使用されます。次に、my-time-machine
リポジトリに戻り、これをリモートとして追加しましょう。
cd ~/project/my-time-machine
git remote add origin ../remote-repo
origin
という名前のリモートを、シミュレートしたリモートリポジトリに向けて追加しました。次に、リモートリポジトリに変更を加え、それを取得しましょう。
cd ~/project/remote-repo
echo "This is a remote change." > remote_file.txt
git add remote_file.txt
git commit -m "Add remote file"
次に、my-time-machine
リポジトリに戻り、リモートから変更を取得しましょう。
cd ~/project/my-time-machine
git fetch origin
Git がリモートリポジトリから変更をダウンロードしたことを示す出力が表示されるはずです。次のような内容です。
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 2 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), 258 bytes | 258.00 KiB | elapsed 0.00s.
From ../remote-repo
* [new branch] master -> origin/master
git fetch
コマンドは、リモートリポジトリからコミット、ファイル、参照をローカルリポジトリにダウンロードします。ただし、これらの変更を現在の作業ブランチに自動的にマージすることはありません。これにより、変更を統合する前に検査することができます。
git fetch
をニュースフィードから最新の更新を取得するようなものと考えてください。見出しや要約が表示されますが、まだ記事全体を読んでいません。後でどの記事(変更)を読む(マージする)かを決めることができます。