3
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

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

作ったばかりのリポジトリで作業中、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

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
3
Help us understand the problem. What are the problem?