拥有一个包含此历史记录的 git 存储库(初始存储库):
A-B---C---D-H-I
\ /
E-F-G
想要将历史记录更改为:
I`(will squash all from B till I)
/
A-B
\
E-F-G
但是当我尝试
rebase -i <SHA "A">
中的 G
时,可用提交列表中缺少 D
,我看到:
pick B
pick C
pick E
pick F
pick G
pick H
pick I
如果我从 shot 分支中删除提交
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>
,它应该显示您没有任何变化。