git fetch origin を実行した直後、作業ツリーのファイルが変わらないのはなぜ?
正答
- fetch は接続確認だけを行い、何も取得しないから
- fetch した内容は次回の commit 時に反映されるから
- fetch はリモートの履歴を取得するだけで、ブランチに取り込まないから
- リモートに新しいコミットが無かったから
解説
git fetch はリモートの新しいコミットをダウンロードし、origin/main のようなリモート追跡ブランチを更新する。現在のブランチや作業ツリーには触らないので、取り込むには git merge origin/main か、fetch と merge を一度に行う git pull を使う。接続確認だけではなく実際にデータを取得している。fetch 後に git log main..origin/main で何が来たか確認してから取り込むと、安全に更新を把握できる。
参考: git-scm.com
この問題を含む Git のテストを制限時間つきで解く
Gitクイズへ