为了在我的项目中实现类似 github 的 fork/pull request 功能,自动合并功能需要在每次查看 pull request 时检测源/目标存储库之间的冲突。
我想到的一种解决方案是分析“git request-pull”输出。有没有更简单的方法来检测冲突?
为了在我的项目中实现类似 github 的 fork/pull request 功能,自动合并功能需要在每次查看 pull request 时检测源/目标存储库之间的冲突。
我想到的一种解决方案是分析“git request-pull”输出。有没有更简单的方法来检测冲突?
我已经删除了我之前的答案,我不明白这个问题......
现在这是闪亮的新答案:
git merge --ff-only <branch>
如果没有冲突,它将进行合并。发生冲突时,它会给您一条信息:Not possible to fast-forward
. 在这种情况下,控制台返回码 (echo $?) 是 128。
我们创建了一个 git-conflict-detector 来检查最新推送的提交与所有现有分支。
这是一个简单的单一脚本,由 GitHub WebHook URL 发起,甚至知道在检测到冲突时发送 HiChat 通知。
如您在此处git merge --ff-only <branch>
所见,我们的解决方案基于分析输出
我们已将其开源,因此所有人都可以享受、学习和贡献。
据我所知,在您实际合并这些分支之前,您无法确定合并是否会产生冲突。
因此,要回答您的问题,如果您需要实现这种功能,您很可能应该尝试合并您的源/目标并回滚合并操作(使用git reset --hard
)。
我从未使用过git request-pull
,但查看输出,我没有看到任何可以帮助您解决问题的信息。git diff
使用, git wtf
,可能会得到相同的结果git remote show <name>
。
参考:
git wtf
:https ://github.com/michaelklishin/git-wtfgit request-pull
: http: //progit.org/book/ch5-2.html最后我编写了自己的函数来检测冲突。
这很简单,只需获取所有差异行,然后比较是否有相同的修改。