我是 Git 新手(来自 Subversion 和 Bazaar)。
当我在一个分支上工作并进行提交时,从那时起,master 已经进行了一些提交,当我将我的分支 merge 到 master 中时,我发现了一些奇怪的情况:
- 在我的提交和主控的提交中,我们都创建了具有相同路径的新文件。它决定用我的文件完全覆盖主文件,而不发出冲突警告!
- 在两个分支中都已修改的预先存在的文件向我显示了冲突警告,并且为某些部分添加了内联注释,但对于其他部分,它实际上会在没有警告的情况下覆盖。<
我可以告诉 Git 对这些冲突更加严格吗?我不希望它在没有警告的情况下覆盖文件,如果它要评论文件供我检查,我希望它提供总差异的绝对评论。
如果没有,我就被迫确定自己修改过的文件,然后手动 merge 它们。
最佳答案
当我尝试第一个场景时,我得到以下输出:
Auto-merging conflicted
CONFLICT (add/add): Merge conflict in <filename>
您的第二种情况将在两个版本之间不同的行上产生冲突,但不会在仅在一个版本或另一个版本中更改的行上产生冲突。这是预期的行为。
Git 实际上比大多数其他 VCS 更好地处理此类冲突。您的流程中还有其他一些问题导致了问题。也许您有一些罕见的配置设置。也许您误解了在其中一个命令上使用的标志的含义。也许某些文件实际上尚未提交到您或您同事的工作目录中。也许你所在的分支与你想象的不同。找到一个准确的、可重现的、不符合您预期的命令序列,我们可以尝试从那里为您提供帮助。
关于git - merge 分支时如何防止更改被覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214754/