PUROGU LADESU

ポエムがメインのブログです。

【Git】5.リベース

ブランチの起点となるコミットを別のコミットに移動し、履歴を一直線に出来る。
親のコミットがリベース先の先頭のコミットに変わる。

コマンド

(対象ブランチに移動して)git rebase master
対象ブランチがmasterの先頭にくっついて、一直線になる

その状態でmasterに切り替えてマージするとfastforwardになる
git switch master
git merge feature (fast forward)featureをmasterに取り込む

注意

pushしたものはrebaseしたらダメ。強制pushも絶対ダメ。

マージとリベース

マージ
履歴をちゃんと残したい場合(履歴が複雑になる)
コンフリクト解決はかんたん

リベース
履歴を見やすくしたい場合(実際の分岐と変わる)
コンフリクト解決はコミットすべてに必要

どちらを使うか。
プッシュしていないローカルの変更はリベースを使う。
プッシュしたあとはマージを使う。
コンフリクトしそうな場合もマージを使う。

プルにはマージ型とリベース型がある。
git pull マージ型はマージコミットが作られる。
git pull --rebase マージコミットが残らない。
単に最新を取得したいときは無駄なコミットが残らないリベースがおすすめ。
デフォルト設定も出来る git config --global pull.rebase true

設定
グローバル ~/.gitconfig
ローカル ./.git/config