使用Source Tree,在冲突的情况下执行rebase,解决冲突后rebase无法工作。

86

我在Windows上使用SourceTree作为我的git工具。

我有一个main分支和一个feature分支,但在有冲突的情况下,无法让SourceTree执行rebase操作。

main分支看起来像:

c1 -> c2 -> c4 -> c5

feature分支看起来像:

c1 -> c2 -> c3

我想将feature分支rebase成以下样子:

c1 -> c2-> c4-> c5-> c3

c3c5之间存在冲突。我可以解决冲突,但是当我提交更改后,我会得到一个HEAD标记,并且查看我的图表时,我会发现feature分支没有被rebase。

如何使rebase操作正常工作?


只是确认一下:在解决冲突后,您是否执行了 git rebase --continue 命令? - Robert Rüger
@Robert - 不,我点击了“提交”按钮。 - user4007604
2
我不知道关于git的图形界面,但命令行工作流程是解决冲突,使用git add将其添加到索引中,然后继续使用git rebase --continue进行变基。 - Robert Rüger
在怀疑的时候,打开控制台并输入git status,它会指导你(在这种情况下,git status会告诉你“解决冲突并键入git merge --continue)。 - andrew.fox
2个回答

176

很遗憾,在中,解决rebase冲突的UX路径相当糟糕。

在您解决冲突并将所有更改放入暂存区后,不要点击提交(commit),而是转到操作(Actions)-> 继续Rebase(Continue Rebase):

enter image description here


8
这句话的意思是你已经解决了冲突,想要继续变基操作。 - Philip Pittle
4
请注意,“将所有更改都放在暂存区中”非常重要。我已经解决了所有的冲突,但有些更改不在暂存区中。Sourcetree似乎什么也没做,而命令行git rebase --continue则显示了正确的警告消息。 - Wim Deblauwe
1
在Sourcetree解决冲突后,在Bash中执行git rebase --continue会提示需要执行git add。而使用Sourcetree GUI继续rebase的预期方式应该是这样的。 - JonSlowCN
2
@Timmmm - 是的,我同意SourceTree在帮助用户理解正在发生的事情方面还有很大的提升空间。 - Philip Pittle
4
如果您想在 SourceTree 中改进此功能,请随意投票/评论,我已经提出了问题:https://jira.atlassian.com/browse/SRCTREEWIN-7761。 - CrazyTim
显示剩余4条评论

9
在最新版本的SourceTree中,当您解决了冲突并将所有更改放入暂存区后,不要点击提交,而是转到“操作”->“继续变基”。 最后,您会在Pull / Push按钮附近看到数字。这是正常的。只需右键单击您的分支,然后选择“强制推送”选项来推送您的代码。如果您没有看到“强制推送”选项,则必须在SourceTree上激活它。

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