libgit2:获取后如何合并和提交?

时间:2017-09-26 13:18:42

标签: c libgit2

我设法从遥控器中取出,我正在运行下面的代码,以便在本地主分支中暂存更改。

    git_annotated_commit * fetchhead_commit;

    git_annotated_commit_lookup(&fetchhead_commit,
        repo,
        oid
    );                      

    git_merge(repo,&fetchhead_commit,1,NULL,NULL);

所以现在如果我使用git命令行工具提交我得到一个自动合并提交注释,之后我可以看到日志与远程相同。我试图通过libgit获得相同的功能,但到目前为止,我尝试创建合并提交的努力导致远程历史记录丢失。

我该如何做正确的"提交合并的更改,以便从远程保存历史记录?

编辑:通过快进做了一点,但是如果有本地提交,这些在传入合并后会丢失。本地更改不会丢失,但会在合并后暂存,并且必须再次提交。

您可以在此处查看我的代码:https://github.com/fintechneo/libgit2/blob/master/jsbuild/jslib.c

合并发生在fetchead_foreach_cb函数中,该函数再次从jsgitpull调用

据记载,如果有人想知道emscripten的内容是什么,那么这个hack在网络浏览器中有效。

1 个答案:

答案 0 :(得分:1)

使用git_commit_create创建合并提交。合并提交应该有两个父母。一个是当前的HEAD提交。第二个是您在git_merge中合并的相同注释提交(例如,获取头)。