我必须找到git成功合并文件的情况,但合并后程序中存在编译错误。
有没有办法做到这一点!!
我知道git使用最长的公共子序列进行合并。
我做了很多试验,但无法找到。
如果有人知道....请帮助
答案 0 :(得分:5)
Git合并偶尔会产生非工作代码而不会产生任何冲突。想象一下:
foo
的调用。foo
的函数签名,或重命名/删除函数。现在A的函数调用与B的更改不兼容,但是git不知道,因为它们位于不同的模块中。
在这种情况下,您应该做的是检查合并后的更改,并根据需要修复代码。 (这也是为什么你应该尽可能缩短功能分支的原因,特别是如果你试图向上游提交补丁)。
答案 1 :(得分:1)
你确定合并引入了错误吗?在合并之前签出版本并检查它是否编译。如果找不到有效的提交,请查看bisect command以查找违规提交。
如果合并引入了错误,您可以使用git diff来区分合并和最后一次工作提交,并查看合并所做的更改。
否则当然合并有时可能会引入错误和错误,因为它可以处理文件内容而无需了解内容的意图。唯一的方法是手工修复它。
答案 2 :(得分:1)
当您执行合并时,如果您遇到冲突,git会通知您。然后由代码维护者来仔细解决冲突。
现在,您可以做的是在合并之前对提交进行硬重置(在尝试合并之前为HEAD
),然后再次执行合并,确保此次正确解决冲突。 / p>
执行git日志并获取最后一个稳定提交的id,然后执行 -
git reset --hard <commit id>
(你也可以恢复合并提交,但现在你可以重置HEAD
)
现在进行合并并解决冲突。如果你在团队中工作,如果你不是特别了解你的队友,那么变化,收集它们并解决冲突会更好。
一切顺利。