by shigemk2

当面は技術的なことしか書かない

git rebase -iの怪

ありのまま今起こったことを話すシリーズ。

* ほげ
* ほげ2
|\  
| * ほげ3
| * ほげ4
| * ほげ5
| * ほげ6
| * ほげ7
* | ほげ8
* | ほげ9
* | ほげ10
|/  

上のようになっている10コのコミットをgit rebase -iを使って圧縮しようと思ったんだ。
そしたら、コンフリクトの嵐。コンフリクトを修正してgit rebase --continueをやっても
またコンフリクト。何回コンフリクトを起こせば気がすむのか。

面倒になったので、試しにほげ10とほげ9だけを圧縮しようとしたら、
同じようなコンフリクトに見舞われた。

しかも ほげ10 と ほげ3-7との圧縮が行われる予定になってしまっている。

とりあえず面倒を承知でコンフリクトを修正→git rebase --continueを繰りかえしていると、
普通にgit rebase が完了した。

上記の問題は、一度圧縮したものにさらに圧縮をかけると、
コンフリクトの嵐が起こるということだった。
そしてこうなった。

* ほげ1
* ほげ3
* ほげ4
* ほげ5
* ほげ6
* ほげ7
* ほげ8
* ほげ(9+10)

元の圧縮コミットが消えた上に、ほげ9と10の圧縮にも成功した形になっている…のだろうか?

そしてこの状態で、上記8つのコミットをgit rebase -iで圧縮したら、1つのコミットになった。
もうわけが分からないよ。