今回はgit pullは避けるべき!
ていうのはわかっていたんだけどなんで避けるべきか、中途半端にしかわかっていなかったので、そこを解消します。
ちなみに前回もfetchとpullの記事を書いたのでそれも参考にしながら。
【Gitの使い方】git pull とgit fetch二つのコマンドを使い分けよう。
↑使いこなせなかったんで、やり直し。
Table of Contents
git pullとは
git pullとは
git fetch
git merge
上記2つのコマンドをまとめて行っているものになります。
いきなり反映されるのでまずいかもしれないので、基本的には使わないようにしましょう。
とgitに慣れるまでは言われるでしょう。
ではなぜいけないのか、fetchの意味とともに説明していきましょう。
git fetch
fetchでなにが起きているのかというと、いったんローカルのリポジトリにリモートの作業ディレクトリ(対象のブランチ)の内容を取り込んでいます。
この時点ではローカルの作業ディレクトリに反映されていません。
いったんリポジトリにとりこんでから、mergeコマンドでローカルの作業ディレクトリに反映させることができるのです。
わかりにくいと思うので、下記の画像を参照ください。

簡単にいうとワンクッション置くわけですね。
git fetchすると反映まではされずにリポジトリに取り込まれるというわけです。
ちなみにリポジトリに取り込まれるというよりも、リモート追跡ブランチに反映されるというのが厳密な表現かもしれません。
ではpullコマンドではどうなっているのでしょうか?

pullコマンドでは取り込みから反映まで一気にされているわけです。
ということは間違えて違う作業ブランチにいたときにはえらいこっちゃとなるわけだ。
リモートの内容を反映させたい作業ディレクトリ(ブランチ)にいるのなら大丈夫だけど、ふとした時に間違えてしまうと、コードが変わって面倒なことになるわけですね。
なんで、ワンクッションおいて、fetch+mergeで作業内容を反映させよう。というわけです。
まとめ
最初、fetchするんだ!とはわかっていたけど、実際にはfetchって何しているんだ?どこにリモートの内容が??
という風に思ったんですが、何とかわかってきました。
やはり講座をやるだけじゃなくて、自分で考えながらやってみないとわからないなあ。。。
と感じる小一時間でした。