如何检测两个git存储库之间的冲突。

如何检测两个git存储库之间的冲突。,git,pull-request,grit,Git,Pull Request,Grit,为了在我的项目中实现类似github的fork/pull请求功能,自动合并功能需要在每次查看请求时检测源/目标存储库之间的冲突 我想到的一个解决方案是分析“git请求拉”输出。有没有更简单的方法来检测冲突?我删除了以前的答案,我不明白这个问题 现在有一个全新的答案: git merge --ff-only <branch> git合并--仅限ff 如果没有冲突,它将进行合并。如果发生冲突,它会给您一条消息:不可能快进。在这种情况下,控制台返回代码(echo$?)是128。据我所知

为了在我的项目中实现类似github的fork/pull请求功能,自动合并功能需要在每次查看请求时检测源/目标存储库之间的冲突


我想到的一个解决方案是分析“git请求拉”输出。有没有更简单的方法来检测冲突?

我删除了以前的答案,我不明白这个问题

现在有一个全新的答案:

git merge --ff-only <branch>
git合并--仅限ff

如果没有冲突,它将进行合并。如果发生冲突,它会给您一条消息:
不可能快进
。在这种情况下,控制台返回代码(echo$?)是128。

据我所知,在实际合并这些分支之前,您无法确定合并是否会产生冲突

这一点已在中指出:

因此,为了回答您的问题,如果您需要实现这种功能,您最有可能尝试合并源/目标并回滚合并操作(使用
git reset--hard

我从未使用过
git request pull
,但是查看输出,我看不到任何可以帮助您解决问题的信息。使用
git-diff
git-wtf
git-remote-show
可能会得到相同的结果

参考资料:

  • git-wtf
  • git请求拉取

最后,我编写了自己的函数来检测冲突


这非常简单,只需获取所有差异行,并比较是否有相同的修改。

我们创建了一个git冲突检测器,用于检查最新的推式提交与所有现有分支

这是一个简单的脚本,由GitHub WebHook URL启动,甚至知道在检测到冲突时发送HiChat通知

我们的解决方案基于分析
git merge--ff only
输出,如您所见


我们已将其开源,所有人都可以享受、学习和贡献。

这里有什么问题?您正在实现一个合并工具吗?还是一个差异查看工具?或者只是好奇git push将要做什么?在github中,只需单击web上的一个按钮,就可以合并无冲突的pull请求。由于源/目标存储库可以继续提交,因此在此过程中必须检测冲突。我想问一个更简单的方法来检测冲突。最好在这里发布,以供将来参考。这与问题无关,但在获取后合并时很好。