【发布时间】:2021-03-31 04:05:21
【问题描述】:
我在本地提交了一项新功能,从远程提取并遇到了合并冲突。解决它们后,我的功能停止工作。我以为我犯了一个错误,昨天问了a question about this。因此,我对之前的提交进行了硬重置,重复了合并并解决了显示的冲突。
但是,我的功能再次停止工作。我手动查看了代码,发现我本地提交的部分代码被拉取更改了,但没有显示这部分的合并冲突。
因此,对于某些更改,会显示合并冲突,但不会显示其他更改。我通过第三次重现该情况确认了这一点。
这种行为的原因可能是什么?
【问题讨论】:
-
Git 能够在没有冲突的情况下应用更改并不保证代码之后仍然可以按预期工作。举个简单的例子,假设一个提交更改了两个有缺陷的函数中的哪一个被调用,另一个修复了 使用 被调用的函数的一个错误。 Git 可以愉快地合并这些,但总体而言,错误仍然存在。这就是为什么测试(尤其是高级别测试——在那个例子中,功能的单元测试仍然可以通过)很重要。
-
非常感谢@jonrsharpe 和 VonC。您的回答提高了我对 git 和软件开发的理解。 :-) 我想我现在已经找到了问题所在:当协作者合并到我的功能的较旧部分时,他们一定拒绝了我的部分更改。由于我没有在当前的本地提交中进行这些更改,因此与远程的差异没有被标记为合并冲突。我计划在未来尽快了解测试以规避这个问题。
标签: git git-merge git-pull git-merge-conflict