如何在SourceTree中正确变换?

Pat*_*ick 36 git rebase atlassian-sourcetree

Windows 7上的SourceTree 1.6.4.0.

让我们说以下是我的出发点:

在此输入图像描述

 C <- master
/
- A - B <- topic
Run Code Online (Sandbox Code Playgroud)

我想把主题改成主人.
我的目标是:

  C - A - B
  ^       ^
master  topic
Run Code Online (Sandbox Code Playgroud)

但我最终得到:

在此输入图像描述

那我可以做

git push origin topic -f
Run Code Online (Sandbox Code Playgroud)

我得到了预期的结果,但在SourceTree中执行此操作的正确方法是什么?

fil*_*hit 30

更新:SourceTree 1.9.1

您可以在工具/选项/ Git /启用强制推送中启用强制推送.启用后,您可以在"推送"对话框中选中"强制推送"复选框.

原始答案

您必须执行强制推送,因为主题分支已经发布并且您正在重写历史记录.如果您进行rebase,则会删除来自origin/topic的提交A和B.

如果您不想进行强制推送,则应该进行合并,特别是如果您的团队成员已经在处理主题.

你还不能用SourceTree for Windows进行强制推送(参见atlassian论坛的答案).您可以在此投票支持此功能:https://jira.atlassian.com/browse/SRCTREEWIN-338

  • 虽然它没有该选项,但您可以创建一个调用批处理文件的自定义操作.这就是我的设置,它感觉非常融合.您可以右键单击提交列表,然后从"自定义操作"子菜单中选择它. (3认同)
  • @ user3858446不幸的是,SourceTree中没有这样的选项.参见[atlassian.com上的答案](https://answers.atlassian.com/questions/54469/how-do-i-perform-a-forced-push-push-f-from-sourcetree).您可以在此投票支持此功能:https://jira.atlassian.com/browse/SRCTREEWIN-338 (2认同)

jac*_*ood 9

更新:SourceTree版本2.6.3(134)(适用于Mac)

转到SourceTree/Preferences/Advanced并单击"高级"对话框顶部的"允许强制推送"复选框.

这允许在推送提交时单击推送对话框中的强制推送.

以前的版本SourceTree/Preferences/General在"常规"对话框的底部有这个.