In diesem speziellen Anwendungsfall möchten Sie den Merge nicht wirklich abbrechen, sondern den Konflikt auf eine bestimmte Weise lösen.
Es besteht kein spezieller Bedarf, zurückzusetzen und einen Merge mit einer anderen Strategie durchzuführen. Die Konflikte wurden korrekt von git hervorgehoben und die Anforderung, die Änderungen der anderen Seiten zu akzeptieren, bezieht sich nur auf diese eine Datei.
Für eine nicht zusammengeführte Datei in einem Konflikt stellt git die gemeinsame Basis, lokale und entfernte Versionen der Datei im Index zur Verfügung. (Hier werden sie zur Verwendung in einem 3-Wege-Diff-Tool von git mergetool
gelesen.) Sie können git show
verwenden, um sie anzuzeigen.
# gemeinsame Basis:
git show :1:_widget.html.erb
# 'unser'
git show :2:_widget.html.erb
# 'ihr'
git show :3:_widget.html.erb
Der einfachste Weg, den Konflikt aufzulösen und die entfernte Version wortwörtlich zu verwenden, ist:
git show :3:_widget.html.erb >_widget.html.erb
git add _widget.html.erb
Oder, mit git >= 1.6.1:
git checkout --theirs _widget.html.erb
48 Stimmen
Ich weiß, dass dies eine superalte Frage ist, aber möchtest du den gesamten Zusammenführungsvorgang abbrechen und den Branch, den du zusammenführen wolltest, nicht zusammenführen lassen? Oder möchtest du einfach nur diese eine Datei ignorieren als Teil eines größeren Zusammenführungsvorgangs, bei dem alle anderen Dateien normal zusammengeführt werden? Für mich impliziert dein Titel Ersteres, der Text deiner Frage möchte Letzteres. Die Antworten geben keine klare Antwort.
0 Stimmen
Ich habe einen ähnlichen Fall beim Commit, der besagt, dass der automatische Merge fehlgeschlagen ist; Konflikte beheben und dann das Ergebnis committen:
[abgelehnt] gh-pages -> gh-pages (nicht-fast-forward)
4 Stimmen
Gwyn, es könnte nützlich sein, hier eine akzeptierte Antwort auszuwählen. Die am besten bewertete Antwort ist etwas weniger sicher als einige der aktuellen Lösungen, daher denke ich, dass es hilfreich wäre, andere hervorzuheben :)