git merge放弃新更改而不会发生冲突

时间:2018-08-03 10:22:02

标签: git merge git-merge conflict atlassian-sourcetree

我的团队中有时会遇到一个非常奇怪的问题。
让我用图片来描述它:

Commits

让我们说我们有两个具有相同基本提交“ commit 1”的分支。
现在,在“提交2”中,有人在文件X.txt中添加了新行。
在“提交3”中,有人添加了行文件Y.txt。

此后,还有更多的提交,更多的分支,最后我们合并了这两个分支。像完全正常合并的接缝。

但是有时候会发生一些奇怪的事情,因为Git可以决定放弃Y文件中绿色分支中所做的更改,即使该文件在红色分支中没有任何更改。
有时,它甚至删除添加到绿色分支但未添加到红色分支的文件。

我很困惑,不知道为什么会这样。
我们正在使用SourceTree,项目在Unity中。

对于任何想法,我都会感激不尽;-)。

1 个答案:

答案 0 :(得分:0)

  

但是有时会发生一些奇怪的事情,因为git可以决定应该放弃Y文件中绿色分支中所做的更改,即使该文件在红色分支中完全没有变化也是如此。

     

有时,它甚至会删除添加到绿色分支但未添加到红色分支的文件。

这取决于合并方向:合并中哪个是源分支,哪个是目标分支?

  • 如果红色合并为绿色(git checkout greengit merge red),则以绿色而不是红色修改的文件将保持不变。
    并且以绿色添加但被认为以红色删除的文件可以删除。
  • 如果绿色合并为红色(git checkout redgit merge green),则不会发生相同的问题。