Git Cherry-pick
Zuletzt aktualisiert
git cherry-pick kopiert die Änderungen eines oder mehrerer bestimmter Commits und wendet sie als neue Commits auf deinen aktuellen Branch an. So holst du dir einen einzelnen Fix aus einem anderen Branch, ohne den gesamten Branch zu mergen - nützlich, um einen Hotfix zurückzuportieren oder einen einzelnen Commit aus einem Feature-Branch zu ziehen.
Probiere das im Terminal-Playground aus - eine echte Shell in deinem Browser, nichts zu installieren.
Syntax
| Command | What it does |
|---|---|
git cherry-pick <hash> | Wendet einen Commit auf den aktuellen Branch an |
git cherry-pick <a> <b> | Wendet mehrere Commits der Reihe nach an |
git cherry-pick <a>..<b> | Wendet einen Bereich von Commits an (ohne a) |
git cherry-pick -n <hash> | Wendet die Änderungen an, committet aber noch nicht |
git cherry-pick -x <hash> | Vermerkt den ursprünglichen Commit in der Nachricht |
Während eines Cherry-pick
Wenn ein Cherry-pick auf einen Konflikt stößt, löse ihn und fahre fort.
| Command | What it does |
|---|---|
git cherry-pick --continue | Setzt nach dem Lösen der Konflikte fort |
git cherry-pick --abort | Bricht ab und stellt den Branch wieder her |
git cherry-pick --skip | Überspringt den aktuellen Commit |
Praxisbeispiel
| Schritt | Befehl | Ergebnis |
|---|---|---|
| 1 | git log --oneline hotfix | Finde den Hash des Fixes, zum Beispiel a1b2c3d |
| 2 | git switch main | Wechsle auf den Branch, der den Fix bekommen soll |
| 3 | git cherry-pick a1b2c3d | Wendet den Fix als neuen Commit mit neuem Hash auf main an |
Git cherry-pick FAQ
Was macht git cherry-pick?
Wann sollte ich cherry-pick verwenden?
main in einen Release-Branch zurückzuportieren oder einen einzelnen nützlichen Commit aus einem Feature-Branch zu ziehen, ohne alles zu mergen. Wenn du den ganzen Branch willst, nutze stattdessen merge oder rebase.Wie cherry-picke ich mehrere Commits?
git cherry-pick <a> <b> <c> wendet jeden der Reihe nach an. Für einen zusammenhängenden Bereich nutze git cherry-pick <start>..<end>, das jeden Commit nach start bis einschließlich end anwendet. Füge <start>^..<end> hinzu, wenn du start selbst einschließen willst.Was, wenn ein Cherry-pick einen Konflikt verursacht?
git add für die Ergebnisse aus und führe dann git cherry-pick --continue aus. Um alles rückgängig zu machen, nutze git cherry-pick --abort, das deinen Branch in den Zustand vor dem Start des Cherry-pick zurückversetzt.Wie cherry-picke ich einen Commit aus einem anderen Branch?
git log --oneline <other-branch>, wechsle auf den Branch, der ihn bekommen soll, und führe git cherry-pick <hash> aus. Du kannst auch einen Branch-Namen angeben, etwa git cherry-pick feature; dann wird der Commit an der Spitze dieses Branches übernommen.Was ist der Unterschied zwischen cherry-pick und merge?
Kann ich das online üben?
git cherry-pick in einer echten Shell in deinem Browser auszuführen - nichts zu installieren. Coddys kostenloser interaktiver Git-Kurs behandelt außerdem Schritt für Schritt das Verschieben von Commits zwischen Branches.