git rebase 会跳过一些提交

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

拥有一个包含此历史记录的 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”之后的所有更改”)?

git git-rebase
1个回答
1
投票

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

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.