LibGit2Sharp如何解决冲突?

时间:2015-11-19 19:38:36

标签: c# .net libgit2sharp

使用libgit2sharp我正在合并来自两个用户的更改:

public void Merge(string branchName)
{
    using (Repository repo = new Repository(this._settings.Directory))
    {
        var branch = repo.Branches[branchName];
        MergeOptions opts = new MergeOptions() { FileConflictStrategy = CheckoutFileConflictStrategy.Merge };
        repo.Merge(branch, this._signature, opts);

        if (repo.Index.Conflicts.Count() > 0)
        {
             //TODO: resolve conflicts
        } 
    }
}

即使策略设置为合并,冲突仍然会出现。我发现无法解决冲突。 Conflict对象没有Resolve方法。

除了删除文件或重命名文件之外,有没有办法解决代码冲突?有自动解析功能吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

LibGit2Sharp 执行automerge。如果您看到冲突,则文件是不可合并的。不可合并冲突的一个例子是当两个分支都改变同一文件的同一区域时。

在这种情况下,LibGit2Sharp会将文件写入工作目录,并在冲突区域周围加上标记。例如,如果某个文件foo.txt存在冲突,则可能如下所示:

<<<<<<< HEAD
this is a change in HEAD
=======
this is a change in the other branch
>>>>>>> other branch

要解决冲突,请将您要接受的内容放在工作目录中,然后使用Repository.Index.Add("foo.txt")暂存它。