Git Rebase不会重新定位整个分支

时间:2015-08-21 21:14:53

标签: git git-rebase

由于某种原因,运行git rebase突然没有改变我的整个分支,我无法想象为什么。在rebase之前我所拥有的是以下内容:

enter image description here



运行git rebase develop后我拥有的是:

enter image description here

请注意,rebase中没有任何来自分支的提交。在这一点上,我必须在最后一次提交时运行一个git reset --hard,现在是一个无头分支,以便按顺序恢复。

奇怪的是,如果我在feature-relationalSurveys分支上创建超出屏幕截图中显示的额外提交然后重新设置,则所有其他提交都将在rebase中出现。这就像git不知道分支实际开始的位置。我以前从未见过这种情况,我不知道是什么导致它或如何解决它。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我将根据提供的信息进行猜测。 A)您的可视化工具已损坏或B)develop已包含feature-relationalSurveys的所有内容。您可以通过尝试其他可视化工具(如git log --decorate --graph)来测试A.

Lemme explain B.关键信息是......

  • feature-relationalSurveys处于合并点,rebase不应合并。
  • feature-relationalSurveysdevelop处于同一点。
    • 更奇怪的是,它与origin/develop处于同一点。
  • feature-relationalSurveys中的任何提交都没有在rebase之后的提示。
    • 我认为这些承诺在历史上更深。

我能想到这件事的唯一方法就是如果你有这样的事情......

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

我不确定你是如何进入那种状态的,可能是通过一种奇怪的合并或改变,但你去了。当Git进行rebase feature-relationalSurveys开发时,通知C'的内容与C相同,因此它会跳过它。 B'的内容与B相同,因此会跳过它。 A'A相同,跳过。没有任何不同的内容,所以它只会feature-relationalSurveys develop。{/ p>

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

feature-relationalSurveys的提示处无法看到develop次更改,因为它们已在develop的历史记录中被隐藏。

这是我最好的猜测,只有你可以验证。在rebase之前显示develop的状态会有所帮助。