概要
git rebase -i
という対話式のコマンドを使うことによって以下のことができます。
- 順番を整える
- 複数のコミットを1つに
- 1つのコミットを複数に
それではみていきましょう。
順番を整える
順番を整えるコマンドは
git rebase -i <リビジョン>
こうすることで指定した範囲のコミットを示すプロンプトが開くので順番を変えることができます。
git rebase -i HEAD~3
上記は直近3つのコミットを指定しています。
複数を1つにする
これもまた同様に
git rebase -i <リビジョン>
でプロンプトを開きます。
pick 734c3db second commit
squash 623b6c7 third commit
pick 1551dc2 fourth commit
pick 85d93ff fifth commit
squash
にすることで、その前のコミットに取り込まれます。
これで保存をすると、third commitがsecond commitに取り込まれ、1つのコミットになっています。
ログをみて確認してみてください。
1つを複数に分割する
先ほど1つにしたコミットを元に戻しましょう。
git rebase -i
でプロンプトを開き、
edit 8e967a0 second commit
pick e61c9d5 fourth commit
pick 49f88f8 fifth commit
操作したいコミットにedit
をつけます。
これで保存をすると、ログの最新がedit
で指定したコミットになっており、リベースがリポジトリの操作を待っている状態になります。
git reset HEAD^
として直近のコミットをやり直すようにします。
そして今回はsecondとthirdの結合を解除するので先にsecondで行った変更を施してあげて、コミットします。
git commit -m "second commit"
次にthirdで行った変更を施してあげて、コミットします。
git commit -m "third commit"
最後に、分割するコミット作業が完了したら、
git rebase --continue
することで、分割されます。
ログで確認してみてください。
まとめ
git rebase -iについてみました。
参考になれば幸いです。