421 Stimmen

Wie schließe ich die Zusammenführung ab, nachdem ich meine Zusammenführungskonflikte gelöst habe?

Ich habe die Grundlegende Verzweigung und Zusammenführung Abschnitt des Git Community Book.

Also folge ich ihm und erstelle einen Zweig: experimental .

Dann ich:

  1. zum experimentellen Zweig wechseln (git checkout experimental)

  2. einen Haufen Änderungen vornehmen

  3. Übertragen Sie es (git commit -a)

  4. Wechsel zum Master-Zweig (git checkout master)

  5. einige Änderungen vornehmen und diese festschreiben

  6. zurück zu experimental wechseln (git checkout experimental)

  7. Master-Änderung nach experimental zusammenführen (git merge master)

  8. es gibt einige Konflikte, aber nachdem ich sie aufgelöst habe, habe ich 'git add myfile' gemacht

  9. Und jetzt stecke ich fest, ich kann nicht zurück zum Master wechseln.

wenn ich es tue

 $ git checkout master
error: Entry 'res/layout/my_item.xml' would be overwritten by merge. Cannot merge.

und das habe ich getan:

$ git rebase --abort

Keine Umbasierung im Gange?

und das habe ich:

$  git add res/layout/socialhub_list_item.xml
$ git checkout master
error: Entry 'res/layout/my_item.xml' would be overwritten by merge. Cannot merge.

Was kann ich tun, damit ich zu meinem Master-Zweig zurückkehren kann?

369voto

Jimmy Punkte 33423

Wenn während einer Zusammenführung ein Konflikt auftritt, müssen Sie die Zusammenführungsübergabe manuell beenden. Es hört sich so an, als hätten Sie die ersten beiden Schritte getan, nämlich die Dateien, bei denen es einen Konflikt gab, bearbeitet und dann git add um sie als aufgelöst zu markieren. Schließlich müssen Sie die Zusammenführung mit git commit . Zu diesem Zeitpunkt können Sie wieder den Zweig wechseln.

Kurzer Tipp : Sie können verwenden git commit -am "your commit message" um Add- und Commit-Operationen an verfolgten Dateien gleichzeitig durchzuführen. (Credit: @vaheeds)

313voto

VonC Punkte 1117238

Wie schließe ich die Zusammenführung ab, nachdem ich meine Zusammenführungskonflikte gelöst habe?

Mit Git 2.12 (Q1 2017) werden Sie den natürlicheren Befehl haben:

git merge --continue

Und wenn Sie die Nachricht beim Fortsetzen/Wiederaufnehmen der Zusammenführung nicht bearbeiten wollen:

git merge --continue --no-edit

Wenn --no-edit funktioniert nicht, da akseli berichtet in die Kommentare können Sie tun:

# Linux
GIT_EDITOR=true git merge --continue

# Windows
cmd /V /C "set "GIT_EDITOR=true" && git merge --continue"

Sie können einen Alias für diese Befehle definieren.


Véase c7d227d übergeben (15. Dezember 2016) von Jeff King ( peff ) .
Siehe 042e290 festlegen , c261a87 übergeben , Übergabe 367ff69 (14. Dezember 2016) von Chris Packham ( cpackham ) .
(Zusammengefasst von Junio C. Hamano -- gitster -- en 05f6e1b übergeben , 27. Dezember 2016)

Véase 2.12 Versionshinweise .

merge : hinzufügen ' --continue ' als Synonym für die Option ' git commit '

Lehren ' git merge ' die --continue Option, die das "Fortsetzen" einer Zusammenführung durch Vervollständigen ermöglicht.
Der traditionelle Weg, eine Zusammenführung nach der Lösung von Konflikten abzuschließen, ist die Verwendung von ' git commit '.
Jetzt mit Befehlen wie ' git rebase ' und ' git cherry-pick ' mit einem ' --continue Option, die eine solche Option zu ' git merge ' präsentiert eine einheitliche Benutzeroberfläche.

28voto

Bombe Punkte 77831

Sollten Sie während einer Zusammenführung/Rückführung einmal nicht weiterkommen, können Sie jederzeit

git reset --hard

um Ihre Arbeit auf den Stand der letzten Übertragung zurückzusetzen. Dadurch gehen Ihre Änderungen aus dem Arbeitsbaum verloren. Wenn Sie also vor der Zusammenführung lokale Änderungen hatten, sind diese danach verschwunden - deshalb ist es ratsam, eine Zusammenführung nicht zu starten, wenn Sie lokale Änderungen haben :)

14voto

Timidfriendly Punkte 3154

Die nächsten Schritte nach dem manuellen Lösen der Konflikte sind:-

  1. git add .
  2. git status (dies zeigt Ihnen, welche Befehle notwendig sind, um den automatischen Zusammenführungsprozess fortzusetzen)
  3. [Der Befehl git schlägt vor, z. B. git merge --continue , git cherry-pick --continue , git rebase --continue ]

13voto

Shimon Doodkin Punkte 3946

Einfach git commit es.

Wahlweise git abort es:
Ich bin auf einen Zusammenführungskonflikt gestoßen. Wie kann ich die Zusammenführung abbrechen?

Um das Leben beim Zusammenführen zu erleichtern, installieren Sie kdiff3 und konfigurieren Sie es als Mergetool. Anweisungen: http://doodkin.com/2016/05/29/git-merge-easy-github-this-branch-has-conflicts-that-must-be-resolved-use-the-command-line/

Diese Seite enthält dieses Video: https://www.youtube.com/watch?v=Cc4xPp7Iuzo

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X