Git SourceTree-使分支成为新的主分支

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

我使用GIT和Sourcetree作为gui

我有两个分支-master和feature-01。我现在想用feature-01上的内容覆盖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