Git SourceTree-使分支成为新的主分支
我使用GIT和Sourcetree作为gui 我有两个分支-master和feature-01。我现在想用feature-01上的内容覆盖master上的所有内容Git SourceTree-使分支成为新的主分支,git,atlassian-sourcetree,Git,Atlassian Sourcetree,我使用GIT和Sourcetree作为gui 我有两个分支-master和feature-01。我现在想用feature-01上的内容覆盖master上的所有内容 我必须在master上回滚一些更改后执行此操作。然而,我回滚了新分支上的更改,使该分支达到了我希望master达到的100%,但现在当我合并两个时,master保留了它应该放弃的所有回滚更改,就像在分支中一样://您可以删除主分支(它只是一个标记为提交的名称),然后在需要的地方重新创建: git branch -d master
我必须在master上回滚一些更改后执行此操作。然而,我回滚了新分支上的更改,使该分支达到了我希望master达到的100%,但现在当我合并两个时,master保留了它应该放弃的所有回滚更改,就像在分支中一样://您可以删除主分支(它只是一个标记为提交的名称),然后在需要的地方重新创建:
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-01
分支:git merge--strategy=ours master
git merge-feature-01
--strategy=ours
选项忽略master
中的所有内容。然后,第二个命令将“前进”master
到这个新提交
此时,您将在master
中拥有功能
内容。使用此选项,您无需“重置”遥控器或任何类似设备;它只会将您在功能中所做的所有工作放入主控
这在SourceTree中可能吗
不,这不可能直接实现,因为Sourcetree中不支持合并--ours
。
(我已经用最新的2.1.11.0和Git 2.14.1 embedded进行了测试,2017年9月)
请参见(…从2013年开始)
我需要使用我们的策略,即将myBranch合并到master,放弃myBranch上的任何更改
合并两个分支时,此选项仍然不可用:
如中所述,您需要定义自定义操作:
这将允许您模拟以下序列的合并--ours
步骤
git checkout feature-01
git merge --strategy=ours master
git checkout master
git merge feature-01
SourceTree支持签出
和简单的合并
。自定义操作允许您执行合并--ours
步骤。
然后,master
内容将替换为feature-01
内容。
完全来自SourceTree
对于mercurial,在“”之后,您需要为命令创建一个自定义操作(如上所示)。-f
选项在正常的分支
对话框中不可用如果feature-01
和master
共享相同的历史记录,这可能没问题。在SourceTree中如何做到这一点是个问题。来自master分支的git merge--strategy=theres feature-01
不会做与这两个命令完全相同的事情吗?谢谢@沃克。我刚刚意识到我正在使用Mecurial进行源代码控制。这也有可能吗?而且我对放弃对mybranch的更改感到困惑。我为什么要这么做。我想用mybranch替换master,就像问题所问的那样。@kirsteng我已经更新了mercurial的答案(尽管所有页面都是关于Git;)。不要担心废弃部件:最终结果是用一个分支替换另一个分支。按要求。
git checkout feature-01
git merge --strategy=ours master
git checkout master
git merge feature-01