我在Windows 10上使用SourceTree 1.9.10.0并且我不想将我的功能分支EUR-1058重新设置为master。我是这样做的:
这导致以下树:
如果我做了拉动,则会发生自动合并:
为什么会这样?是否由于提交" Mailcheck重写"在我的笔记本电脑上,我现在正在从我的桌面进行重新调整,并且SHA-1哈希值有所改变或类似的东西?
答案 0 :(得分:3)
当您在EUR-1058
上重新设置master
分支时,您重写该分支的历史记录。请考虑以下图表说明要点:
master: ...A -- B ---- C -- D
\
EUR-1058: E -- F
在EUR-1058
上重新master
表示执行以下步骤:
master
的提交,在这种情况下提交B
master
之上重播B
的提交,在这种情况下重播提交C
和D
EUR-1058
以来对B
提交的提交,即提交E
和F
在变基础之后,图表看起来像这样:
master: ...A -- B ---- C -- D
\
EUR-1058: E' -- F'
请注意,我已标记为E'
和F'
,以表明这些是新提交,这是在rebase期间进行的。
现在回答您的实际问题,当您尝试在git pull
上执行EUR-1058
时,Git首先检查您的本地分支是否可以通过遥控器上的内容快速转发(或在origin/EUR-1058
)。在这种情况下,不可能有快进。此时Git查看远程分支与本地完全不同。因此,它通过进行合并提交来完成拉动。
您可能应该做的是在完成rebase后通过以下方式强制将您的重新定位EUR-1058
分支推送到遥控器:
git push --force EUR-1058
这里需要使用force,因为分支的历史/基数已经改变。这与您最终进行合并提交的原因相同。推力后,你可以继续正常生活。
请注意,您应该意识到重写EUR-1058
的历史可能会导致共享此分支的任何人遇到问题。所以,应该认真做好。