LoginSignup
5
3

More than 5 years have passed since last update.

`git rebase -i` 時にfirst commitも編集対象に含めたい場合は `--root` オプションを使う

Posted at

作ったばかりのリポジトリで作業中、first commitに別のコミットの内容を含めようと思って git rebase -i したところ一番最初のコミットを対象にした作業ができなかったため、どうすればよいか調べました。

結論

--root オプションを付与すればOKです。

状況

* 0ee5342 - (HEAD -> master) third commit (83 seconds ago) <kyo>
* 18ce4ba - second commit (2 minutes ago) <kyo>
* 1268ce4 - first commit (3 minutes ago) <kyo>

上記のようにcommitが3つある状態で third commitfirst commit にsquashさせようと思い git rebase -i HEAD~3 したところ、以下のようなエラーが出たと言うものです。

fatal: Needed a single revision
invalid upstream HEAD~3

対応

調べたところ rebase する際に --root オプションを付けると first commitから全てのcommitを対象することができるとのことだったので git rebase -i --root としたところ、無事first commitも含めて rebase -i することができました。

余談

rebase時には既にgithubにpush済だったため、first commitをいじったことでログが以下のようにローカルとリモートで全く別のツリーになりました(画像はSourceTreeによるもの)。普段中々見ることのない状況だったので非常に面白い体験でした。

git-rebase-root.png

参考

5
3
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
5
3