7

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

我想到的一种解决方案是分析“git request-pull”输出。有没有更简单的方法来检测冲突?

4

4 回答 4

3

我已经删除了我之前的答案,我不明白这个问题......

现在这是闪亮的新答案:

git merge --ff-only <branch>

如果没有冲突,它将进行合并。发生冲突时,它会给您一条信息:Not possible to fast-forward. 在这种情况下,控制台返回码 (echo $?) 是 128。

于 2012-04-24T07:13:40.580 回答
1

我们创建了一个 git-conflict-detector 来检查最新推送的提交与所有现有分支。

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

如您在此处git merge --ff-only <branch>所见,我们的解决方案基于分析输出

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

于 2013-11-05T01:07:32.463 回答
0

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

这已经在:如何在没有实际合并的情况下测试合并中指出。

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

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

参考:

于 2012-04-24T11:34:40.783 回答
-1

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

这很简单,只需获取所有差异行,然后比较是否有相同的修改。

于 2012-06-20T07:41:03.450 回答