Übersicht
git cherry-pick [-n] [-x] [--continue] [--abort] <commit>...
Beschreibung
Der git cherry-pick-Befehl wendet die durch einen oder mehrere bestehende Commits eingeführten Änderungen als neue Commits auf den aktuellen Branch an. Es ist das richtige Werkzeug, wenn Sie einen einzelnen Fix von einem anderen Branch brauchen, ohne den ganzen Branch zu mergen. Cherry-Picks erstellen neue Commits mit neuen SHAs, bewahren aber den ursprünglichen Autor und die Nachricht.
Cherry-Picking kann genau wie ein Merge Konflikte erzeugen. Verwenden Sie --continue nach der Auflösung oder --abort, um abzubrechen. Das -x-Flag fügt eine "(cherry picked from commit ...)"-Zeile zur Nachricht hinzu — nützlich für Nachverfolgbarkeit beim Portieren von Fixes zwischen Wartungs-Branches.
Im täglichen Einsatz integriert sich git cherry-pick eng mit Shell-Aliasen, Editor-Plugins und Continuous Integration. Power-User fügen oft Aliase hinzu, die Flags kombinieren, die sie immer übergeben, oder wickeln den Befehl in Skripte, die Teamkonventionen durchsetzen. Die Ausgabeformatierung kann über Git-Config angepasst werden — Pretty-Formate, Farbschemata und Pager-Verhalten sind alle einstellbar. Wenn etwas schiefgeht, ist der erste Diagnoseschritt üblicherweise, den Befehl erneut mit GIT_TRACE=1 in der Umgebung auszuführen, was die zugrunde liegenden Plumbing-Aufrufe offenlegt. Für ungewöhnliche Situationen öffnet die --help-Ausgabe (git cherry-pick --help) die vollständige Manpage mit Details zu jeder Option, einschließlich solcher, die in alltäglichen Workflows selten verwendet werden, aber für Debugging oder Skripting im großen Maßstab essentiell sind.
Zu verstehen, wie git cherry-pick mit dem Rest von Gits Datenmodell interagiert — der Objektdatenbank, dem Index, Refs und dem Working Tree — zahlt sich aus. Jeder Befehl operiert auf einer Teilmenge dieser Stücke, und zu wissen, welche er berührt, hilft Ergebnisse vorherzusagen und sich von Fehlern zu erholen. Das Lesen der offiziellen Git-Dokumentation neben praktischer Übung in einem Wegwerf-Repository ist der schnellste Weg, die Nuancen zu verinnerlichen. Die meisten Produktionsprobleme mit Git rühren von einer von drei Ursachen: überraschendem Standardverhalten, partiellen Netzwerkoperationen oder dem Umschreiben bereits geteilter Historie. Ein funktionierendes mentales Modell der Nebenwirkungen von git cherry-pick hilft, alle drei zu vermeiden.
Häufige Optionen
| Option | Beschreibung |
|---|---|
-n, --no-commit | Wendet Änderungen an, committet aber noch nicht. |
-x | Annotiert die Commit-Nachricht mit dem Quell-SHA. |
-e, --edit | Bearbeitet die Commit-Nachricht vor dem Committen. |
--continue | Setzt nach Konfliktauflösung fort. |
--abort | Bricht ab und stellt vorherigen Zustand wieder her. |
--skip | Überspringt aktuellen Commit und fährt fort. |
-m <parent> | Spezifiziert Mainline beim Picken eines Merge-Commits. |
-S | GPG-signiert die resultierenden Commits. |
Beispiele
git cherry-pick abc123
# Einen einzelnen Commit auf den aktuellen Branch anwenden
git cherry-pick -x abc123 def456
# Zwei Commits mit Nachverfolgbarkeits-Annotationen anwenden
git cherry-pick A..B
# Einen Bereich picken (exklusiv A, inklusiv B)
git cherry-pick --continue
# Nach Konfliktauflösung fortsetzen
Häufige Fehler
Dieselbe Änderung wiederholt zu cherry-picken kann spätere Merges verwirren, da identisch aussehende Commits unterschiedliche SHAs haben. Verwenden Sie git rerere, um sich Auflösungen zu merken. Einen Merge ohne -m zu picken schlägt fehl. Für lange Sequenzen bevorzugen Sie Rebase oder Merge.
Verwandte Befehle
git rebase, git revert, git merge, git rerere