git push
の反対は git fetch
です。git pull
ではありません。
どういう意味?
-
git push
は、ローカルのリポジトリの内容をリモートのリポジトリに送り込むコマンドです。 -
git fetch
は、リモートのリポジトリの内容をローカルのリポジトリに取り込むコマンドです。
ほら、対になるコマンドでしょう。
では、git pull
は?
-
git pull
は、まず、リモートのリポジトリの内容をローカルのリポジトリに取り込み、次に、現在のローカルのブランチに対して、それに対応するリモートのブランチをマージするコマンドです。
マージ処理が入りますね。特に、マージが完了すると、作業ツリーの内容がマージ後の内容に変わります。
git push
や git fetch
は、リポジトリだけを操作し、作業ツリーは無関係です。これに対して、git pull
は、リポジトリだけでなく、作業ツリーも操作します。このため、git push
と git pull
を対にして語るのは不自然だといえます。
git fetch を使おう
git fetch
は作業ツリーを書き換えないので、気軽に実行できます。リモートの情報をいつでも取り込んでおきましょう。リモートに追随したくなったときに、自分の目でログを確認して、git merge FETCH_HEAD
でマージすれば良いです。
git pull
は妙に複雑なコマンドで、分かりにくいし、余計なことするし、いいことありません。こんなコマンドは忘れてしまいましょう。
これからは、リモートの取り込みは git fetch
です。