Ich habe festgestellt, dass die beste Lösung für mich darin besteht, dass ich einfach die Zusammenführung durchführen und bei Konflikten abbrechen . Diese spezielle Syntax erscheint mir sauber und einfach. Dies ist Strategie 2 unten.
Wenn Sie jedoch sicherstellen wollen, dass Sie Ihren aktuellen Zweig nicht durcheinander bringen, oder wenn Sie einfach nicht bereit sind, unabhängig von der Existenz von Konflikten zusammenzuführen, erstellen Sie einfach einen neuen Unterzweig davon und führen diesen zusammen:
Strategie 1: Der sichere Weg - Zusammenführen aus einem temporären Zweig:
git checkout mybranch
git checkout -b mynew-temporary-branch
git merge some-other-branch
Auf diese Weise können Sie den temporären Zweig einfach wegwerfen, wenn Sie nur sehen wollen, wo die Konflikte liegen. Sie müssen sich nicht die Mühe machen, die Zusammenführung "abzubrechen", und Sie können zu Ihrer Arbeit zurückkehren - checken Sie einfach "mybranch" wieder aus und Sie werden keinen zusammengeführten Code oder Konflikte in Ihrem Zweig haben.
Dies ist im Grunde ein Probelauf.
Strategie 2: Wenn Sie unbedingt fusionieren wollen, aber nur, wenn es keine Konflikte gibt
git checkout mybranch
git merge some-other-branch
Wenn git Konflikte meldet (und NUR WENN ES Konflikte) können Sie dann tun:
git merge --abort
Wenn die Zusammenführung erfolgreich ist, können Sie sie nicht abbrechen (nur zurücksetzen).
Wenn Sie noch nicht bereit sind, zu fusionieren, verwenden Sie den oben beschriebenen sichereren Weg.
[EDIT: 2016-Nov - Ich habe Strategie 1 gegen 2 ausgetauscht, da es scheint, dass die meisten Leute nach dem "sicheren Weg" suchen. Strategie 2 ist jetzt eher ein Hinweis darauf, dass man die Zusammenführung einfach abbrechen kann, wenn die Zusammenführung Konflikte hat, mit denen man nicht umgehen kann. Denken Sie daran, wenn Sie Kommentare lesen!]
22 Stimmen
Ich würde nur
git merge
ygit reset --keep HEAD@{1}
wenn mir das Ergebnis nicht gefällt.4 Stimmen
Beachten Sie, dass die Liste der Commits mit ihrem Diff nicht notwendigerweise die ganze Geschichte erzählt - wenn die Zusammenführung nicht trivial ist, und besonders wenn es Konflikte gibt, könnte das tatsächliche Ergebnis der Zusammenführung ein wenig interessant sein.
0 Stimmen
Das Problem dabei ist, dass man nur schwer erkennen kann, welche Änderungen tatsächlich vorgenommen wurden.
2 Stimmen
Ihre ursprüngliche Methode tut genau das. Der Punkt meines Kommentars ist, dass es zwar schön und gut ist, einzelne Diffs zu betrachten, aber bei einem komplexen Merge kann es zu überraschenden Ergebnissen kommen, selbst wenn alle zusammengeführten Commits unabhängig voneinander gut sind.
3 Stimmen
@Jan: Aus einigen Gründen,
git reset --keep HEAD@{1}
zurückgegebenfatal: Cannot do a keep reset in the middle of a merge.
Hilfe?0 Stimmen
@Siku-Siku.Com: Der Befehl geht davon aus, dass die Zusammenführung abgeschlossen und das Ergebnis commited wurde. Ich glaube, die Meldung über Konflikte sagt Ihnen sowohl, wie Sie die Zusammenführung beenden als auch wie Sie sie abbrechen können.
1 Stimmen
Mögliche Duplikate von Gibt es eine Option git-merge --dry-run?
11 Stimmen
Warum gibt es nicht eine
--preview
Option in git-merge?0 Stimmen
Ich glaube, die korrekteste Antwort, die ich auf diese Frage gesehen habe, ist hier: stackoverflow.com/a/6283843/1695680