git リベースで履歴を書き換える
コミットをきれいに整えてからpushしたい時は履歴を書き換えよう。
*GitHubにPushしていないコミット
直前のコミットをやり直す git commit --amend
リモートリポジトリにPushしたコミットはやり直したらダメだよ。
複数のコミットをやり直す git rebase -i <コミットID> git rebase -i HEAD~3 pick gh21f6d ヘッダー修正 pick 193054e ファイル追加 pick 84gha0d README修正
-iは--interactiveの略だよ。 対話的リベースといって、やり取りしながら履歴を変更していくよ。
やり直したいcommitをeditにする
edit gh21f6d ヘッダー修正 pick 193054e ファイル追加 pick 84gha0d README修正
やり直したら実行する
git commit --amend
次のコミットへ進む(リベース完了)
git reabase --continue HEAD~ 1番目の親を指定する。 HEADを基点にして数値分の親コミットまで指定する。 HEAD^ マージした場合の2番目の親を指定する。 rebase -i コマンドの一連の流れ ①git rebase -i コマンドで対話的リベースモードに入る ②修正したいコミットをeditにしてコミットエディタを終了する ③editのコミットのところでコミットの適用が止まる ④git commit --amendコマンドで修正 ⑤git rebase --continueで次のコミットへ行く ⑥pickでとそのままのコミット内容を適用して次へ行く
コミットを並び替える、削除
# コミットを並び替える、削除 ①8e4ghaOdのコミットを消す ②193054eを先に適用する pick 193054e ファイル追加 pick gh21f6d ヘッダー修正
コミットをまとめる
# コミットを1つにまとめる pick gh21f6d ヘッダー修正 squash 193054e ファイル追加 squash 84ghaOd README修正
コミットを分割する
# コミットを分割する pick gh21f6d ヘッダー修正 pick 193054e ファイル追加 edit 84ghaOd READMEとindex修正
git reset HEAD^ git add README git commit -m 'README修正' git add index.html git commit -m 'index.html修正' git rebase --continue