LoginSignup
1
2

More than 3 years have passed since last update.

履歴を置き換えるgit rebase -iについて

Last updated at Posted at 2020-01-06

概要

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についてみました。
参考になれば幸いです。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2