First commit が git rebase -i できない問題 → git rebase -i --root でできる

git init してから一番最初のcommit内容を、2番目のcommitと一緒にまとめたい、と後で思った。
よーし、git rebase -i HEAD~~からのfixupで…


$ git rebase -i HEAD~~
fatal: Needed a single revision
invalid upstream head~~
えっ・・・(ΦωΦ)
一番最初のcommitはgit rebase -i HEADほにゃららでは遡れないのか・・・おお!最初に空のinitial commit 作るの頭いい!なるほど…git checkout --orphan !!! そんな機能があるの知らなかった・・・。
gitのorphanブランチを理解する - ::Eldesh a b = LEFT a | RIGHT b

orphanブランチというのは、元のブランチからの歴史を受け継がず、gitリポジトリ内で新しく0から歴史を持つブランチです。新しくルートになり、親コミットを持ちません。
なるほど、何かできそうな気がする。。裏ワザっぽくてカッコイイからやってみたいぞ…。
と思ったら、おおお!
_人人人人人人人人人人人人_
> git rebase -i --root  <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄



$ git rebase -i --root

pick xxxxxxx first commit
pick yyyyyyyy second commit
でたー!first commit.


そんなわけでgit rebase -i --root とすると、一番最初のcommitから遡ってgit rebase -iしてくれるようです。
ということは、すごく長く続いてるプロジェクトとかでこれやったらどうなっちゃうんでしょうね…怖くて試せません。。
で、さっきのを

pick xxxxxxx first commit
fixup yyyyyyyy second commit
fixupして、second commitの内容が first commitの中にめでたくまとまり、気に入らない歴史が改ざんされました。

Git様、偉大なり…
皆様、ありがとうございました。



入門Git
入門Git
posted with amazlet at 13.04.21
濱野 純(Junio C Hamano)
秀和システム
売り上げランキング: 135,129