Git pullを使うべきでない3つの理由

  • git pullは使わなくてもよい
  • 初心者はgit pullを使わない方がよい

我々ソフトウェアエンジニアは勉強が大好きなので、コマンドがあるとそれを勉強して使いこなさなければいけないと考えがちですが、ときには「覚えない、使わない」という発想も大事なのではないでしょうか。

以下にその理由をのべます。

git pullは使う必要がない

git pullを使わないとできないこと、というのはありません。
使わなくても全然困りません。
git fetchとgit mergeとgit rebaseだけですべての用は足せます。

私はチーム開発でGitを本格的に使い始めて数か月経ちますが、普段の作業でgit pullを使ったことはないしそれで困ったこともありません。

git pullを使わなければ、余計な落とし穴に落ちない

git pullには落とし穴があります。
初心者はたいていその穴に落ちます。

「git pullに気をつけろ」という記事をよく見かけます。

新しいブランチを自分のローカルに持ってくるときに
$ git pull origin new-branch:new-branch
とするのは、危険です。大抵の場合、意図していない結果を生みます

Git で新しいリモートブランチをローカルに持ってくるときに git pull してはいけない理由 - 彼女からは、おいちゃんと呼ばれています

gitが push と pull を何も指定しなくても簡単に使えるように裏で色々設定とか勝手にやってくれてるのでいざちょっと違うことをしようとしたり、細かい挙動を把握しようと思った時に深みにはまるというのがわかった。

git pullの詳細な挙動を追ってみる - hokaccha.hamalog v2

これらのことはgit pullを使うから悩むのであって、git pullを使わなければ全く気にする必要がありません。

git pullを使ってしまうことで逆に遠回りな作業をしてしまうケースもあります。
git pushがrejectされたときの解決の手順 - 今日もスミマセン。

git pullさえ知らなければ、このような遠回りをしなくて済むのにと思うことがしばしばあります。

git pullを使わなければ頭がすっきりする

「git pullとgit fetchの違い」を検索した経験は誰でもあるのではないでしょうか?

git pullを使う場合、
  • 「pullとfetchの関係」
  • 「pullとmergeの関係」
  • 「pull --rebaseとrebaseの関係」
などについて意識しなければなりません。

ところがgit pullを使わなければ、「pullとfetchは何が違うのか」は問題ではなくなります。
だって、pullは使う必要ないんですもの。

git pullを知らなければ、頭が非常にすっきりします。

git pushアップロード
git fetchダウンロード
git merge2つのブランチを合流

このように、アップロードはpush、ダウンロードはfetch、という風に理解がシンプルになります。

git pullが登場してしまうと、「ダウンロードするコマンドにはfetchとpullの2つがあるんだけど、pullはダウンロード後にもがもが」と話がややこしくなります。

「入門git」でもgit pullについての詳しい解説がない

私が愛用するこの本でもgit pullについてはほとんど解説されていません。


当初、「git pullについて解説しないなんて、不親切だな」と思いましたが、よく考えるとgit pullは覚える必要がないので解説も必要ないのだと妙に納得してしまいました。

(本にはgit pullを使うなとは書いてありませんので私の勝手な解釈です)

git pullを使うのはどういうときか

gitの操作に馴れてきて、
「git fetchしてからgit mergeするのめんどくせー」
と思い始めたらそのときにはじめてgit pullを使ってみましょう。

そうすればgit pullの挙動についてすんなり理解できると思います。
カテゴリ: