【问题标题】:Git merge conflict reset everythingGit合并冲突重置一切
【发布时间】:2013-06-02 15:12:57
【问题描述】:

我不得不回滚 Live 服务器,现在在尝试将我的 dev 分支与 master 合并时遇到冲突错误,因为它们不同步。

有什么方法可以简单地重置所有内容,以便我可以将 dev 与 master 合并?

Dev 是正确的,我很乐意覆盖 master,但如果可能的话,我不想通过 mergetool 解决所有冲突。

【问题讨论】:

    标签: git github


    【解决方案1】:

    取决于你的目标是什么,有两种选择:

    git checkout dev
    git merge -s ours master
    

    它将合并的结果完全保留为dev,实际上,它只是将master 标记为dev 的父级,但在源代码级别对dev 不做任何事情。

    或者

    git checkout dev
    git merge -X ours master
    

    它像往常一样进行合并,但如果有冲突,它会自动使用来自dev 的片段。这意味着,如果 master 引入的某些内容与 dev 发生冲突,则它更喜欢 dev,但与那些 NOT 冲突,它会将它们包含在合并结果中。

    【讨论】:

      【解决方案2】:

      听起来您想清除 master 并更改 master 以匹配您的 dev 分支。如果是这种情况,这将起作用(警告任何不在 dev 上的更改都将消失):

      git checkout master
      git reset --hard dev
      

      【讨论】:

      • 这是破坏性的,即丢掉master的历史,这可能是不可取的。
      【解决方案3】:

      我假设您的 dev 分支通常在 master 之前,因此您希望(正式)将 master 合并回 dev,但保持 dev 中的所有内容不变。这可以按如下方式完成:

      git checkout dev
      git merge -s ours -m 'formal no-op merge of changes from master' master
      

      【讨论】:

        猜你喜欢
        • 2012-10-29
        • 2017-07-24
        • 1970-01-01
        • 2015-04-22
        • 2015-10-15
        • 2014-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多