Help us understand the problem. What is going on with this article?

git push の反対は git pull ではない

More than 5 years have passed since last update.

git push の反対は git fetch です。git pull ではありません。

どういう意味?

  • git push は、ローカルのリポジトリの内容をリモートのリポジトリに送り込むコマンドです。
  • git fetch は、リモートのリポジトリの内容をローカルのリポジトリに取り込むコマンドです。

ほら、対になるコマンドでしょう。

では、git pull は?

  • git pull は、まず、リモートのリポジトリの内容をローカルのリポジトリに取り込み、次に、現在のローカルのブランチに対して、それに対応するリモートのブランチをマージするコマンドです。

マージ処理が入りますね。特に、マージが完了すると、作業ツリーの内容がマージ後の内容に変わります。

git pushgit fetch は、リポジトリだけを操作し、作業ツリーは無関係です。これに対して、git pull は、リポジトリだけでなく、作業ツリーも操作します。このため、git pushgit pull を対にして語るのは不自然だといえます。

git fetch を使おう

git fetch は作業ツリーを書き換えないので、気軽に実行できます。リモートの情報をいつでも取り込んでおきましょう。リモートに追随したくなったときに、自分の目でログを確認して、git merge FETCH_HEAD でマージすれば良いです。

git pull は妙に複雑なコマンドで、分かりにくいし、余計なことするし、いいことありません。こんなコマンドは忘れてしまいましょう。

これからは、リモートの取り込みは git fetch です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away