【发布时间】:2013-06-02 15:12:57
【问题描述】:
我不得不回滚 Live 服务器,现在在尝试将我的 dev 分支与 master 合并时遇到冲突错误,因为它们不同步。
有什么方法可以简单地重置所有内容,以便我可以将 dev 与 master 合并?
Dev 是正确的,我很乐意覆盖 master,但如果可能的话,我不想通过 mergetool 解决所有冲突。
【问题讨论】:
我不得不回滚 Live 服务器,现在在尝试将我的 dev 分支与 master 合并时遇到冲突错误,因为它们不同步。
有什么方法可以简单地重置所有内容,以便我可以将 dev 与 master 合并?
Dev 是正确的,我很乐意覆盖 master,但如果可能的话,我不想通过 mergetool 解决所有冲突。
【问题讨论】:
取决于你的目标是什么,有两种选择:
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 冲突,它会将它们包含在合并结果中。
【讨论】:
听起来您想清除 master 并更改 master 以匹配您的 dev 分支。如果是这种情况,这将起作用(警告任何不在 dev 上的更改都将消失):
git checkout master
git reset --hard dev
【讨论】:
我假设您的 dev 分支通常在 master 之前,因此您希望(正式)将 master 合并回 dev,但保持 dev 中的所有内容不变。这可以按如下方式完成:
git checkout dev
git merge -s ours -m 'formal no-op merge of changes from master' master
【讨论】: