如何使用libgit2实现合并冲突预览?

如何使用libgit2实现合并冲突预览?,libgit2,Libgit2,我正在尝试实现一个内容管理网站,在很多方面,它就像一个简化的github 版本控制和协作部分基于使用libgit2的git 但我找不到如何实现合并冲突预览,这将告诉用户她的更改是否干净以合并,以及哪些行有冲突 这里的例子 使用git_merge函数执行合并,但是,此函数将直接更改当前索引 我还检查了github开源替代方案,但我现在忘记了它的名称。该项目使用了EclipseIDE中的一个库,该库提供了冲突预览功能 我应该如何用libgit2实现这一点?是否有示例代码?正如您所指出的,git\u

我正在尝试实现一个内容管理网站,在很多方面,它就像一个简化的github

版本控制和协作部分基于使用libgit2的git

但我找不到如何实现合并冲突预览,这将告诉用户她的更改是否干净以合并,以及哪些行有冲突

这里的例子

使用git_merge函数执行合并,但是,此函数将直接更改当前索引

我还检查了github开源替代方案,但我现在忘记了它的名称。该项目使用了EclipseIDE中的一个库,该库提供了冲突预览功能


我应该如何用libgit2实现这一点?是否有示例代码?

正如您所指出的,
git\u merge
函数会改变工作目录和索引。您可以使用
git\u merge\u commits
函数在内存中合并两次提交并返回结果索引


然后,您可以在索引上迭代查找冲突,或者如果只想知道是否存在冲突,只需调用即可。

非常感谢。关于git_merge_commit的另一个问题是,do do commit提交两个存储库中的最新提交。假设我想合并从repo B到repo A的3个最上面的提交,我需要传递给这个函数的是最新的提交?这不是一个提交,它合并了两个分支,但这两个分支不需要有一个指向它们的分支。例如,如果您有
HEAD
指向
1af6744
,您有
branch
指向
89bca51
,那么
git\u merge\u提交(out、repo、1af6744、89bca51…)
相当于在命令行上运行
git merge branch