SourceTree - 将分支作为新的主分支

10
我正在使用GIT和Sourcetree作为GUI。
我有两个分支 - master和feature-01。现在,我想用feature-01上的所有内容覆盖master的内容。
在master上回滚了一些更改后,我不得不这样做。但是,我在新分支上回滚了更改,使该分支完全符合我想要的master,但现在当我合并两个分支时,master保留了所有应该丢弃的已回滚更改,就像在分支中一样 :/
4个回答

8
您可以执行以下操作:
  1. 从您的feature-01分支: git merge --strategy=ours master
  2. 然后从您的master分支: git merge feature-01
第一条命令将创建一个新的(合并)提交,使用--strategy=ours选项忽略所有在master中的内容。然后,第二条命令将“推进”master到这个新的提交。
此时,您将在master中拥有您的feature内容。使用此选项,您无需“重置”远程或类似的任何操作;它将会将您在feature中完成的所有工作放入master中。

6
如何在SourceTree中进行此操作是问题所在。 - Yeats
从主分支运行git merge --strategy=theirs feature-01不会和这两个命令做完全相同的事情吗? - tumelo

5
这在SourceTree中是否可能?
不,它不可能直接实现,因为Sourcetree不支持merge --ours。(我已经测试了最新的2.1.11.0版本,嵌入Git 2.14.1,2017年9月发布。)
请查看SRCTREEWIN-1237(...从2013年开始!)
我需要使用我们的策略,即将myBranch合并到master分支,丢弃myBranch上的任何更改。
git merge -s ours myBranch

这种情况下合并两个分支时仍然无法使用:

merge options


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

custom action

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

git checkout feature-01
git merge --strategy=ours master
git checkout master
git merge feature-01

在SourceTree中支持checkout和简单的merge,自定义操作允许您执行merge --ours步骤。
然后,master内容将被feature-01内容替换。
全部使用SourceTree完成。
对于Mercurial,在遵循“替换hg branch内容”的指南之后(详见此处),您需要创建自定义操作(如上所示),用于执行hg branch -f命令(普通的branch对话框中没有-f选项)。

谢谢您,@VonC。我刚刚意识到我正在使用Mecurial进行源代码控制。这也是可能的吗? - Kirsten
我也对放弃对mybranch的更改感到困惑。为什么我要这样做呢?我想像问题所问的那样用mybranch替换master。 - Kirsten
1
@kirsteng 我已经更新了有关mercurial的答案(尽管整个页面都是关于Git的;))。不用担心丢弃部分:最终结果是将一个分支替换为另一个分支,就像你要求的那样。 - VonC

0

您可以在SourceTree 3.0中完成此操作

选择feature-01分支,然后弹出一个终端窗口

SourceTree Terminal Window

在终端中输入命令git merge --strategy=ours master并按回车键。 终端会提示输入提交的注释。 这是一个Unix Vim编辑器,所以要保存更改需要 按下Escape键,然后输入:x并按Enter键保存更改

关闭终端

选择master分支

打开另一个终端窗口并输入git merge feature-01

(可能有一种方法可以在终端窗口内交换分支,但我用这个方法行得通)


-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.

如果您已经分享了这个代码库,请小心清理远程分支,而且您可能需要与使用该代码库或负责该代码库的人进行沟通,因为您将重写历史记录。


如果feature-01master共享相同的历史记录,那么这可能是可以的。 - chepner

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