Hatena::ブログ(Diary)

納豆には卵を入れる派です。 このページをアンテナに追加 RSSフィード Twitter

2013-04-21

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

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/ken_c_lo/20130421/1366558065