记一次 Git 合并的 静默丢弃

63 阅读1分钟

今天遇到了一个典型的 Git 陷阱。在合并两个分支时,Git 提示了冲突。冲突内容看起来很简单,只是一些代码格式的差异。但很快发现不对劲——我开发的一个功能消失了。整个功能模块的代码在合并后不翼而飞,而 Git 没有给出任何关于这部分代码的冲突提示。

我是第一次遇到,问AI说是所谓的静默丢弃(Silent Drop):Git 的合并算法在某些情况下会错误地判断变更,认为一个分支的更改已经包含了另一个分支的添加,于是直接丢弃了后者。

最后是靠人工回忆和 git log 追溯才找回了丢失的代码。

合并完,别管有没有冲突,务必亲自扫一眼代码变动!!!

不过我还是没明白怎么怎么造成的。