SourceTree - 使分支成为新的主人

Dus*_*ilk 7 git atlassian-sourcetree

我使用GIT和Sourcetree作为gui.

我有两个分支 - 主和功能01.我现在想要在feature-01上覆盖master上的所有内容.

在必须回滚master上的一些更改后,我不得不这样做.然而,我回滚了新分支上的更改,让分支成为100%,我想要主人,但现在当我合并两个 - 主人保持所有回滚的更改,它应该像分支中一样丢弃: /

Яoi*_*ois 6

您可以执行以下操作:

  1. 从您的feature-01分支机构:git merge --strategy=ours master
  2. 然后从你的主分支: git merge feature-01

第一个命令将从两个分支创建一个新的(合并)提交,但master使用该--strategy=ours选项忽略所有内容。然后,第二个命令将“前进”master到这个新提交。

此时,您的feature内容将位于master. 使用此选项,您无需“重置”遥控器或任何类似操作;它只会投入到master您所做的所有工作中feature

  • 如何在 SourceTree 中做到这一点是个问题。 (6认同)

Von*_*onC 5

这在 SourceTree 中可能吗?

不,这不可能直接实现,因为merge --oursSourcetree 不支持 a。
(我已经使用最新的 2.1.11.0 进行了测试,嵌入了 Git 2.14.1,2017 年 9 月)。

请参阅SRCTREEWIN-1237(...从 2013 年开始!)

我需要使用我们的策略,即将 myBranch 合并到 master 中,放弃 myBranch 上的任何更改

git merge -s ours myBranch
Run Code Online (Sandbox Code Playgroud)

当合并两个分支时,这仍然不可用:

合并选项


正如本文中提到的,您需要定义一个自定义操作:

自定义动作

这将允许您模拟merge --ours以下序列的步骤

git checkout feature-01
git merge --strategy=ours master
git checkout master
git merge feature-01
Run Code Online (Sandbox Code Playgroud)

SourceTree 支持checkout和 simple 。merge自定义操作允许您执行该merge --ours步骤。
然后,master内容将被feature-01内容取代。
完全来自 SourceTree。


对于 Mercurial,在“替换 a 的内容hg branch”之后,您需要为命令创建自定义操作(如上所示)hg branch -f(该-f选项在普通对话框中不可用branch


Fél*_*net -1

您可以删除主分支(它只是标记到提交的名称),然后在您想要的位置重新创建它:

git branch -d master   // this will delete the branch
git checkout feature-01
git branch master   // this will recreate it where you are checked out.
Run Code Online (Sandbox Code Playgroud)

如果您共享了此存储库,请小心,您必须清理遥控器,并且您可能应该与使用该存储库/负责该存储库的人交谈,因为您将重写历史记录。