我会尝试将分支合并到另一个分支,但我一直都是MergeConflictException。所以我尝试暂存所有repository.Index.Conflicts但没有任何改变。
string[] conflictArray = new string[10000];
try {
repository.Merge(branch[selected], GitHelper.getSignature(), options);
} catch(MergeConflictException e) {
if (repository.Index.Conflicts.Count() > 0) {
foreach (var c in repository.Index.Conflicts) {
repository.Index.Stage(c.Theirs.Path);
}
}
}
我'我从LibGit2Sharp.Tests中读取了MergeFixture.cs。
编辑:抱歉,我不会告诉你我为什么要这样做,但是我和我的老师给了我这个与.NET 3.5有关的项目,所以我使用了最新的3.5版本LibGit2Sharp。答案 0 :(得分:2)
MergeConflictException
无疑是一个误导性的名字。这并不意味着存在合并冲突。这不是例外,这是正常的,它不会引发异常。这意味着在合并期间写入文件存在冲突。 (但在一秒钟内就更多了。)
实际上,您的工作目录中的文件已被修改并受到合并的影响。如果在工作目录中修改了文件,可以执行合并如果该文件在您正在合并的分支或当前分支中未更改(相对于共同的祖先)。
但是你几乎肯定想要做的只是在工作目录中没有任何更改时才启动合并。请在合并之前隐藏或提交您的更改。如果您认为您的工作目录中确实没有任何chane,那么correct your line endings。
(请注意,MergeConflictException
不再存在,它已被重命名以帮助避免这种混淆。)