git pull と git pull --rebase の違いについて
git を使っているとgit pull
だったりgit pull --rebase
を使うことが多いと思います。
この違いについて理解するためのアウトプットとして書いています。
git pull
git fetch
+ git merge
と同じ
git fetch
はリモートブランチの内容をローカルにあるリモート追跡ブランチに持ってきます。
このリモート追跡ブランチというのはリモートブランチのコピーのようなもの。
そしてgit merge
でリモート追跡ブランチの内容を現在のブランチに反映させます。
git pull --rebase
git fetch
+ git rebase
と同じ
git fetch
はgit pullと同様です。
git rebase
は持ってきたリモートブランチの内容を現在のブランチの分岐元に持ってきます。
- rebaseする前
A ー B ー C --- リモートブランチ \ D --- ローカルブランチ
- rebaseした後
A ー B ー C --- リモートブランチ \ D --- ローカルブランチ
rebaseした後はリモートにプッシュする際に--force-with-lease
が必要になります。
これはリモートとローカルでブランチの分岐もとが変わってしまうためです。