2016-04-29 170 views
0

我會嘗試將分支合併到另一個分支,但我總是有一個MergeConflictException。所以我嘗試着將所有的repository.Index.Conflicts分段,但是沒有任何改變。LibGit2Sharp - 合併分支

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

你是什麼意思「沒有任何變化」?您是否在合併解決之後提交?但請注意,如果遇到合併衝突,則需要解決它。如果您在不解決衝突的情況下暫存所有這些文件,則會在其中包含衝突標記。在那裏做正確的事情要麼放棄,要麼取決於你寫的程序類型。 –

+0

我在提出問題之前展示了這個:http://stackoverflow.com/questions/33812895/libgit2sharp-how-to-resolve-a-conflict 我告訴'沒有任何改變',因爲我每次都有相同的異常。那麼你能幫我解決衝突嗎? – Daethe

+0

爲什麼你上傳評論的代碼?這很混亂。 – Joseph

回答

1

MergeConflictException無可否認是一個誤導性的名字。這並不意味着合併衝突。這並不例外,這很正常,並沒有引發異常。這意味着在合併期間寫入文件存在衝突。 (但更多關於這一秒。)

事實上,您的工作目錄中有文件已被修改並受合併影響。你可以執行一個合併,如果你有工作目錄中修改的文件如果該文件沒有改變你正在合併的分支或當前分支(相對於共同的祖先)。

但是你幾乎可以肯定想要做的只是當你的工作目錄沒有任何改變時纔開始合併。請合併前存儲或提交更改。如果你確信你的工作目錄中沒有任何chane,那麼correct yourline endings

(注意了,它被重命名,以幫助避免這種混亂MergeConflictException不存在。)

+0

我使用.Net 3.5 LibGit2Sharp的最新版本,因爲該項目基於我的老師給出的先決條件。我必須將其功能與Git進行接口和集成。 我試圖列出所有的衝突路徑,但我注意到祖先和他們是相似的,但我們是空的。所有這些衝突都發生在刪除的文件上。這是正常的 ? – Daethe

+0

如果你有'Ours'爲空的衝突,那麼你的分支已經被刪除了,而另一個則被修改了。非常正常。 –