有下一个存储库(初始存储库):
A-B---C---D-H-I
\ /
E-F-G
想要收到下一个:
I`(will squash all from B till I)
/
A-B
\
E-F-G
但是当我尝试留在 G make
rebase -i <SHA "A">
的提交列表中进行变基时,缺少提交“D”,我看到:
pick B
pick C
pick E
pick F
pick G
pick H
pick I
如果我从不需要的分支“E-F-G”中删除提交并将订单保存为变基:
pick B
squash C
squash H
squash I
结果我丢失了提交“D”的更改
我在
git reset --soft <SHA "A">
和之后commit
决定了问题
但我想知道为什么 git 这样做?
确实存在一种简单的方法,可以从初始存储库中删除合并分支“E-F-G”不需要的部分,而无需变基并创建额外的提交(通过想法,提交“C”和“D”总结了“A”之后的所有更改”)?
D
是合并提交,因此没有任何更改,因此没有什么可以保留的。如果您想确认,请执行git show <D hash>
,它应该显示您没有任何变化。