git 在 rebase 时跳过一些提交

问题描述 投票:0回答:1

有下一个存储库(初始存储库):

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”之后的所有更改”)?

git rebase
1个回答
1
投票

D
是合并提交,因此没有任何更改,因此没有什么可以保留的。如果您想确认,请执行
git show <D hash>
,它应该显示您没有任何变化。

© www.soinside.com 2019 - 2024. All rights reserved.