【问题标题】:LibGit2Sharp - Merging BranchLibGit2Sharp - 合并分支
【发布时间】:2016-04-29 16:30:50
【问题描述】:

我会尝试将一个分支合并到另一个分支,但我一直都有 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 相关,所以我使用最新的 LibGit2Sharp 3.5 版本。

【问题讨论】:

  • “没有任何变化”是什么意思?您是否在合并决议后提交?但是请注意,如果您遇到合并冲突,则需要解决它。如果您暂存所有这些文件而不解决冲突,您将在其中包含冲突标记。正确的做法是放弃或根据您正在编写的程序类型询问用户。
  • 我在问问题之前展示了这个:stackoverflow.com/questions/33812895/… 我告诉'没有任何改变',因为我每次都遇到相同的异常。那么你能帮我解决冲突吗?
  • 为什么要上传注释代码?这令人困惑。
  • 我删除了注释代码,我忘了删除它们,对不起我的英语,我是法国人。我搜索解决冲突,但我必须使用 Ancestor 吗?

标签: c# git libgit2sharp


【解决方案1】:

MergeConflictException 无疑是一个具有误导性的名称。这并不意味着存在合并冲突。这不是异常,这是正常的,并且不会引发异常。这意味着在合并期间写入文件存在冲突。 (但稍后会详细介绍。)

事实上,您的工作目录中有文件已被修改并受到合并的影响。如果您在工作目录中修改了文件,您可以执行合并如果该文件在您要合并的分支或当前分支(相对于共同祖先)。

但是您几乎可以肯定要做的是仅在您的工作目录中没有任何更改时才开始合并。请在合并之前存储或提交您的更改。如果您认为您的工作目录中确实没有任何通道,那么correct yourline endings

(请注意,MergeConflictException 已不存在,它已被重命名以避免这种混淆。)

【讨论】:

  • 我使用最新版本的.Net 3.5 LibGit2Sharp,因为该项目是基于我的老师给出的先决条件。我必须将其功能与 Git 接口并集成。我试图列出所有冲突路径,但我注意到祖先和他们的相似,但我们的为空。所有这些冲突都发生在已删除的文件上。正常吗?
  • 如果您在Ours 为空的情况下存在冲突,则该冲突已在您的分支中删除并在另一个分支中进行了修改。完全正常。
猜你喜欢
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多