Git rebase无法将整个分支合并

3
由于某种原因,运行git rebase时突然不再对整个分支进行变基,我无法想象为什么。在变基之前,我有以下内容: enter image description here 运行git rebase develop后,我有以下内容: enter image description here 请注意,从分支中没有任何提交记录被包含在变基中。此时,我必须在现在成为无头分支的最后一个提交上运行git reset --hard以恢复正常。
奇怪的是,如果我在feature-relationalSurveys分支上创建额外的提交,超出截图中显示的提交,然后再次变基,所有额外的提交都将在变基中出现。就像git不知道分支实际开始的位置一样。我从未见过这种情况发生过,并且不知道是什么原因或如何解决。有什么想法吗?

请问您能在变基之前展示一下 develop 分支吗? - Schwern
1个回答

2
我根据提供的信息猜测,要么A)您的可视化工具出了问题,要么B)develop已经包含了feature-relationalSurveys的所有内容。您可以通过尝试使用另一个可视化工具,例如git log --decorate --graph来测试A。
让我解释一下B。关键信息如下:
  • feature-relationalSurveys处于合并点,rebase不应该合并。
  • feature-relationalSurveysdevelop处于同一点。
    • 更奇怪的是,它与origin/develop处于同一点。
  • 在rebase之后,feature-relationalSurveys中的任何提交都不在其顶部。
    • 我认为这些提交在历史记录中更深入。
我能想到的唯一可能性是您有类似以下情况:...
2 [develop]
|
1
|  A' [feature-relationalSurveys]
A  |
|  B'
B  |
|  C'
C /
|/
D

我不确定你是如何进入这种状态的,可能是通过奇怪的合并或变基,但是就是这样。当Git试图将feature-relationalSurveys变基到develop时,它注意到C'的内容与C相同,因此跳过它。B'的内容与B相同,因此也跳过它。A'A是相同的,也被跳过了。没有不同的内容留下来,所以它只是把feature-relationalSurveys放在develop的位置。

2 [develop] [feature-relationalSurveys]
|
1
|
A
|
B
|
C
|
D

develop分支上的feature-relationalSurveys修改并不会在最新的提交中显示,因为它们被深埋在develop历史记录中。

这只是我的猜测,只有您才能验证。展示rebase之前develop分支的状态将有助于确认。


1
你用B解决了问题,完全是我自己注意力不够。我猜我在创建第二个特性分支时没有切换到develop分支;相反,我从一个我还没有准备好合并的现有特性分支中分支出来。当我将第二个特性分支rebase到develop分支时,第一个分支的提交也随之而来,并随后被合并。然后,当尝试将第一个特性分支rebase到develop分支时,如果没有进行新的提交,那么就没有什么可以rebase的了,因为基于第一个分支的第二个分支已经完成了工作。这是我愚蠢的举动,谢谢你指出来。 - joelmdev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接