Vereinfachen. Wählen Sie die Commits aus. Wählen Sie die Zusammenführung nicht aus.
Hier ist eine Neufassung der akzeptierten Antwort, die die Vorteile / Risiken möglicher Ansätze idealerweise verdeutlicht:
Sie versuchen, fd9f578 auszuwählen, was eine Fusion mit zwei Eltern war.
Anstatt eine Zusammenführung auszuwählen, ist es am einfachsten, die gewünschten Commits aus jedem Zweig der Zusammenführung auszuwählen.
Da Sie bereits zusammengeführt haben, befinden sich wahrscheinlich alle gewünschten Commits in Ihrer Liste. Wählen Sie sie direkt aus, und Sie müssen sich nicht mit dem Zusammenführungs-Commit herumschlagen.
Erläuterung
Die Art und Weise, wie ein Cherry-Pick funktioniert, besteht darin, den Diff, den ein Änderungssatz darstellt (den Unterschied zwischen dem Arbeitsbaum an diesem Punkt und dem Arbeitsbaum seines übergeordneten Elements), zu nehmen und den Änderungssatz auf Ihren aktuellen Zweig anzuwenden.
Wenn ein Commit zwei oder mehr Eltern hat, wie dies bei einer Zusammenführung der Fall ist, repräsentiert dieses Commit auch zwei oder mehr Unterschiede. Der Fehler tritt aufgrund der Unsicherheit auf, für die diff gelten soll.
Alternativen
Wenn Sie feststellen, dass Sie die Zusammenführung und die Auswahl der zugehörigen Commits einbeziehen müssen, haben Sie zwei Möglichkeiten:
(Komplizierter und undurchsichtiger; verwirft auch den Verlauf) Sie können angeben, welcher Elternteil sich bewerben soll.
Verwenden Sie dazu die -m
Option. Zum Beispiel git cherry-pick -m 1 fd9f578
wird die erste Mutter in der Zusammenführung als Basis aufgeführt ist .
Beachten Sie auch, dass beim Auswählen eines Zusammenführungs-Commits alle Änderungen, die an dem übergeordneten Commit vorgenommen wurden, das Sie nicht angegeben haben, -m
in diesem einen Commit zusammengefasst werden . Sie verlieren all ihre Geschichte und bringen all ihre Unterschiede zusammen. Ihr Anruf.
(Einfacher und vertrauter; bewahrt die Geschichte) können Sie git merge
anstelle von verwenden git cherry-pick
.
- Wie üblich
git merge
wird versucht, alle Commits anzuwenden, die in dem Zweig vorhanden sind, den Sie zusammenführen, und sie einzeln in Ihrem Git-Protokoll aufzulisten.
git rebase
- es ist wie eine Zusammenführung, aber anstatt zwei Zweige zu integrieren, wird einer transplantiert, um auf dem anderen zu sitzen.