2012-04-18 168 views
3

我是Git新手(来自Subversion和Bazaar)。如何防止合并分支时覆盖更改?

当我已经工作了分公司,并提出了提交,并自那时以来,主已经取得了一些提交发生,当我合并我支到主,我发现一些奇怪的事件:

  • 在我的提交和主提交中,我们都创建了一个具有相同路径的新文件。它决定用我的文件完全覆盖主文件,没有冲突警告!
  • 已在两个分支中修改的预先存在的文件会向我提供冲突警告,并且会为部分部分添加内嵌注释,但对于其他部分而言,它实际上会在不发出警告的情况下进行覆盖。

我可以告诉Git这些冲突更严格吗?我不希望它在没有警告的情况下覆盖文件,并且如果它要评论文件以供我检查,我宁愿它提供关于总体差异的绝对评论。

如果不是,我不得不确定我自己修改过的文件,然后手动合并它们。

+0

这似乎更适合http://superuser.com,因为它只是编程的一个方面,而不是一个编程问题。 – Phrogz 2012-04-18 17:36:09

+1

@Progrog:你可能是对的。我认为Stack Exchange应该有更明确的指导方针。每次访问超级用户或堆栈溢出时,我都会查看关于该页面的信息,因为我不确定*究竟是什么。 – melkamo 2012-04-18 17:41:06

+2

根据常见问题解答,“程序员常用的软件工具”当然是这里的主题。 – 2012-04-18 20:30:51

回答

2

当我尝试你的第一个场景中,我得到以下的输出:

Auto-merging conflicted 
CONFLICT (add/add): Merge conflict in <filename> 

你的第二个场景会产生上是两个版本之间的不同线路的冲突,而不是线,只有在一个版本改变或另一个。这是预期的行为。

Git实际上比大多数其他VCS更好地处理这些类型的冲突。您的流程还存在其他问题。也许你有一些罕见的配置设置。也许你误解了你在其中一个命令上使用的标志的含义。也许某些文件实际上并未在您或您的同事的工作目录中提交。也许你和你想象的不一样。找到一个确实的,可重复的命令序列,不会像你期望的那样,我们可以尝试从那里帮助你。

+0

谢谢,现在就把一个测试案例放在一起! – melkamo 2012-04-18 20:48:25