【发布时间】:2015-02-09 23:21:50
【问题描述】:
我有 master 分支和 release 分支。发布分支上的最后一次提交在文件中添加了几行,比如 A 和 B。然后这些更改被合并到 master 中(事情发生了)。
后来,其他一些提交被提交给 master,其中一个再次从 A 和 B 中删除了这几行。
现在我将 master 合并到 release 中。一切都很好地合并(除了几个小冲突),但文件 A 和 B 保持不变,存在这几行。
怎么会这样?我可以在合并之前检查发布分支上的提交,然后再次重复它,结果相同。是否有任何命令/开关可以了解合并期间发生的情况?
编辑。 看来我只是做错了什么,但我不明白如何正确地做。我可以很容易地复制这个问题,它似乎正在发生,因为首先在 master 上添加了“bad”行,然后将其删除,并且它们 master 合并到 release 中,其中也存在“bad”行。所以 master 的两次提交都被“歼灭”了,并且释放保持不变,对吧?
那么,我在做什么: 7aee9be 发布时带有“坏”行 84d7ed2 在所有更改之前是 master,比上面更老
现在我签出 84d7ed2,添加“坏”行,提交(在新的测试分支上)。 然后我删除“坏”行,提交。 所以测试分支不再有“坏”行了。 然后我签出 7aee9be 并将测试分支合并到其中。 'bad' 行又回来了,合并提交根本没有任何变化。
【问题讨论】:
-
类似于stackoverflow.com/a/28512602/6309 的 git diff 将有助于理解为什么那个大块仍然存在。
-
@VonC 我用更多细节更新了这个问题。
-
“添加‘坏’行,提交”是什么意思?您是否将发布分支合并到测试分支中?或者你是否做出与发布分支相同的提交?如果你做后者,那就是你的问题。
-
也许你的提交历史和你所做的提交的图表可以帮助我们理解你的意思。
-
git log --graph --decorate --oneline $beforeitstarted..$attheproblem是一个非常有用的概述。