148
140

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GitAdvent Calendar 2012

Day 7

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

Last updated at Posted at 2012-12-08

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 です。

148
140
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
148
140

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?