2013-06-28 2 views
10

Ich bin neu in Git und ich verwende Git-Erweiterung für Visual Studio. Wenn andere Teammitglieder manchmal Änderungen vornehmen, wenn ich versuche, das Projekt zu synchronisieren, kann ich die eingehenden Commits sehen, aber das Projekt wird nicht synchronisiert und der folgende Fehler tritt auf.Git Erweiterung für Visual Studio

Ein Fehler wurde von libgit2 ausgelöst. Kategorie = 21 (MergeConflict). 2 unbestätigten Änderungen durch merge

das Problem überschrieben würde, ist, dass, wie kann ich Konflikte zusammenführen? Es gibt kein Fenster zum Zusammenführen von Konflikten, nachdem dieser Fehler ausgelöst wurde, und ich habe auch alle meine Änderungen übernommen.

Antwort

6

Die Nachricht bezieht sich auf nicht festgeschriebene Änderungen, nicht auf echte Zusammenführungskonflikte. Lerne, KEINE Zusammenführungen zu machen oder irgendwelche ausgefallenen Git-Sachen mit nicht festgelegten Änderungen zu machen. Vor einer Operation die Änderungen bestätigen oder speichern. Selbst wenn ein solcher Konflikt nicht angezeigt wird, ist es wahrscheinlich nicht das, was Sie wirklich tun wollten.

In GE gibt es eine Option, um Änderungen in Arbeitsbereichen anzuzeigen (ignoriere die "langsame" Warnung, wenn du nicht an einem riesigen Repo arbeitest und regelmäßig Hunderte geänderte Dateien hast) und gewöhne dich daran, es im Browse zu betrachten. Der "Commit" -Button zeigt eine Zählung an, die bei einer Zusammenführung 0 sein soll.

Wenn Sie in der Mitte Ihrer Arbeit möchten Sie synchronisieren (und wieder gedacht und haben einen wirklich guten Grund, ehrlich), verwenden Sie stash, dann ziehen (oder Rebase), und nachdem das erledigt ist, stürzen Sie Ihre Arbeit.

Echte Zusammenführungskonflikte werden am besten mit visuellen Merge-Tools behandelt, können Sie versuchen, tortoisemge, oder meine Lieblings, Sourcegear's diffmerge. Kdiff3, das mit GE geliefert wird, ist gut, um sich umzusehen, aber nicht so gut, um sich selbst zu lösen, es sei denn, alles, was Sie brauchen, ist, Kandidaten buchstäblich auszuwählen. GE bringt Sie automatisch zur Konfliktlösung.

+1

Wählen Sie eine gute Workflow-Praxis, um dieses Problem zu vermeiden.Machen Sie immer Ihre Arbeit auf einem Feature-Zweig. Dann swi tch an den Master-Zweig zu synchronisieren, wenn Sie bereit sind, zu fusionieren, dann, sobald der Master auf dem neuesten Stand ist, führen Sie Ihren Feature-Zweig zusammen. Oder Sie können den Feature-Zweig für Master rebasen und dann zusammenführen, wenn Sie den Workflow für den Schnellvorlaufstil bevorzugen. Aber im Grunde - wie in dieser Antwort gesagt. – patthoyts

3

Die frühere Antwort ist nicht immer wahr. Sie können diese Nachricht auch dann erhalten, wenn Sie keine nicht festgeschriebenen Änderungen vorgenommen haben. Mein Kollege & Ich habe beide einen Bug behoben und in unseren lokalen Repos engagiert, und ich mag ihn besser. Ich habe meine Änderung nie eingecheckt, aber sie rückgängig gemacht & zog seine Änderung.

In der Zwischenzeit hatte er seine Änderung "rückgängig gemacht" (ohne mit mir zu sprechen) und bat mich dann, meine Änderung hochzulegen. Ich sagte ihm, dass ich meine Änderung abgeworfen hatte, also gab er seine Rückstellung zurück (endete mit zwei Commits).

Als ich eine andere Änderung schieben (begangen zu meinem lokalen Repo ohne unbestätigten Änderungen), schob er hatte sowohl die Umkehrung seiner Änderung und die Wieder Reversion, und ich habe über die Nachricht.

Die Lösung war ziemlich einfach, ich benutzte das Menü Aktionen, um die Eingabeaufforderung zu öffnen und gab dort eine git pull aus. Das hat richtig funktioniert und ein Merge Commit für mich mit seiner Reversion und Reversion geschaffen.

Ja, er könnte stattdessen (insert incomprehensible git-gibberish here) haben, aber er tat es nicht, also saugen es Nerds. Es funktioniert, wir ziehen weiter.

Hier ist ein VS-Feedback Artikel zu diesem Thema: http://connect.microsoft.com/VisualStudio/feedbackdetail/view/955248/git-merge-fails-claiming-uncommited-change-would-be-overwritten-by-merge-ssh-mergeconflict

+0

git reset --hard, arbeitete für mich (das Problem, das ich hatte, wurde möglicherweise durch nicht festgeschriebene Änderungen an der gleichen Niederlassung verursacht von mir auf einer anderen Maschine, VM) verursacht. – learnerplates

1

Manchmal ist git pull nicht genug ... (wenn Sie bereits auf dem neuesten Stand bekommen“.„)

Es kann zum Zusammenführen von der Kommandozeile notwendig sein:

In Visual Studio (2015, Update 3 für mich) in den Team Explorer, Branches, Actions, Open In Command Prompt, dann:

git merge NameOfBranchBeingMergedFrom 

Dann schließen Sie das Fenster und machen Sie den Rest (Konflikte zusammenführen, usw.) von VS