2016-04-29 17 views
0

Ich werde versuchen, einen Zweig zu einem anderen zusammenführen, aber ich habe eine MergeConflictException die ganze Zeit. Also versuche ich alle repository.Index.Conflicts aber ohne Änderung zu stage.LibGit2Sharp - Zusammenführen von Zweig

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); 
     } 

    } 
} 

Ich suche jede Hilfe viel‘haben, las ich MergeFixture.cs von LibGit2Sharp.Tests.

EDIT: Entschuldigung, ich sage dir nicht, warum ich daran arbeite, aber ich bin Student und meine Lehrer gaben mir dieses Projekt mit .NET 3.5 zu tun, also verwende ich neueste Version 3.5 von LibGit2Sharp.

+0

Was tun Sie „ohne Änderung“ bedeuten? Verpflichten Sie sich nach der Zusammenführungsauflösung? Beachten Sie jedoch, dass Sie einen Konflikt lösen müssen, wenn Sie einen Konflikt erhalten. Wenn Sie alle diese Dateien bereitstellen, ohne die Konflikte zu lösen, fügen Sie die Konfliktmarker in die Dateien ein. Das Richtige zu tun ist entweder aufgeben oder den Benutzer fragen, je nachdem, welche Art von Programm Sie schreiben. –

+0

Ich zeige dies vor dem Stellen der Frage: http://Stackoverflow.com/questions/33812895/libgit2sharp-how-to-resolve-a-conflict Ich sage 'ohne jede Änderung', weil ich jedes Mal die gleiche Ausnahme bereits habe . Kannst du mir helfen, Konflikte zu lösen? – Daethe

+0

Warum laden Sie den kommentierten Code hoch? Das ist verwirrend. – Joseph

Antwort

1

MergeConflictException ist zwar ein irreführender Name. Es bedeutet nicht, dass es einen Merge Konflikt gab. Das ist nicht außergewöhnlich, das ist normal und es gibt keine Ausnahme. Dies bedeutet, dass während der Zusammenführung ein Konflikt beim Schreiben der Dateien aufgetreten ist. (Aber mehr dazu in einer Sekunde.)

In der Tat haben Sie Dateien in Ihrem Arbeitsverzeichnis, die geändert wurden und von der Zusammenführung betroffen waren. Sie können eine Zusammenführung durchführen, wenn Sie Dateien in Ihrem Arbeitsverzeichnis geändert haben wenn diese Datei in der Branche nicht geändert wurde, die Sie zusammenführen oder in der aktuellen Zweigstelle (relativ zum gemeinsamen Vorfahren).

Aber was Sie fast sicher wollen, ist nur eine Zusammenführung zu starten, wenn Sie keine Änderungen in Ihrem Arbeitsverzeichnis haben. Bitte verstauen Sie Ihre Änderungen, bevor Sie sie zusammenführen. Wenn Sie glauben, dass Sie in Ihrem Arbeitsverzeichnis wirklich keine Verknüpfungen haben, dann correct yourline endings.

(Beachten Sie, dass MergeConflictException nicht mehr existiert, wird es diese Verwirrung zu helfen, umbenannt zu vermeiden.)

+0

Ich benutze die neueste Version von .Net 3.5 LibGit2Sharp, weil das Projekt auf der Voraussetzung basiert, die von meinen Lehrern gegeben wird. Ich muss eine Schnittstelle herstellen und seine Fähigkeiten in Git integrieren. Ich habe versucht, alle Konflikte Pfad aufzulisten, aber ich bemerkte Ancestor und Theirs sind ähnlich, aber Ours ist null. All diese Konflikte traten bei gelöschten Dateien auf. Es ist normal ? – Daethe

+0

Wenn Sie einen Konflikt haben, bei dem "Ours" null ist, wurde das in Ihrer Zweigstelle gelöscht und in der anderen geändert. Vollkommen normal. –

Verwandte Themen