【发布时间】:2019-01-11 05:23:28
【问题描述】:
我的团队有时会遇到非常奇怪的问题。
让我用图片来描述它:
假设我们有两个具有相同基本提交“commit 1”的分支。
现在,在“提交 2”中,有人在文件 X.txt 中添加了新行。
在“提交 3”中,有人添加了行文件 Y.txt。
之后有更多的提交,更多的分支,最后我们合并了这两个分支。像完全正常合并的接缝。
但有时会发生一些奇怪的事情,因为 Git 可以决定丢弃在 Y 文件中的绿色分支中所做的更改,即使该文件在红色分支中完全没有更改。
有时它甚至会删除已添加到绿色分支但未添加到红色分支的文件。
我很困惑,我不知道为什么会这样。
我们正在使用 SourceTree,项目在 Unity 中。
如有任何想法,我将不胜感激;-)。
【问题讨论】:
-
请创建一个minimal reproducible example。这不应该在正常使用下发生。除非你从另一个分支中挑选提交,或者在两个分支上创建一个同名的文件。
-
嗯,问题是很难给出这样的例子,因为它是随机发生的(至少在我的观察中)。而且我们有相当扩展的树,我不知道如何复制它。我们最近没有使用 cherypiciking,所以这不是原因。
-
git log --full-history显示的输出是否与普通的git log不同?如果是这样,那么有人进行了合并并丢弃了这些更改,可能是通过git merge -sours。 -
git log 和 git log --full-history 的输出是完全一样的。另外,我的团队使用 sourcetree 的图形 UI,没有人会手动使用 git merge -sours。是否有可能 sourcetree 有时会更改为该合并策略?我找不到任何方法来更改 sourcetree 的合并策略,也许我遗漏了一些东西。
标签: git merge git-merge conflict atlassian-sourcetree