Close

Git Cherry-Pick

git cherry-pick ist ein sehr praktischer Befehl, der es dir ermöglicht, beliebige Git-Commits anhand einer Referenz auszuwählen und an den aktuellen Arbeits-HEAD anzuhängen. Beim Cherry-Picking wird ein Commit aus einem Branch ausgewählt und auf einen anderen angewendet. git cherry-pick kann hilfreich sein, um Änderungen rückgängig zu machen. Wenn beispielsweise ein Commit versehentlich für den falschen Branch durchgeführt wurde, kannst du zum richtigen Branch wechseln und den Commit per Cherry-Pick auf diesen Branch übertragen.


Wann solltest du Git Cherry-Pick verwenden?


git cherry-pick ist ein durchaus nützlicher Befehl, aber nicht in jedem Fall die beste Wahl. Beim Cherry-Picking können doppelte Commits entstehen und in vielen Szenarien, in denen Cherry-Picking funktionieren würde, werden stattdessen herkömmliche Merges bevorzugt. Dennoch eignet sich git cherry-pick für einige Szenarien sehr gut.

Zusammenarbeit im Team


In Teams arbeiten oft mehrere Mitglieder am selben oder mit demselben Code. Ein neues Produkt-Feature hat vielleicht eine Back-end- und eine Front-end-Komponente. Möglicherweise wird Code in zwei Produktbereichen gemeinsam genutzt. Unter Umständen erstellt der Back-end-Entwickler eine Datenstruktur, die auch am Front-end benötigt wird. Der Front-end-Entwickler kann dann mit git cherry-pick den Commit auswählen, mit dem diese hypothetische Datenstruktur erstellt wurde. Danach kann er mit seinem Teil des Projekts fortfahren.

Datenbanken
Zugehöriges Material

Verschieben eines vollständigen Git-Repositorys

Bitbucket-Logo
Lösung anzeigen

Git kennenlernen mit Bitbucket Cloud

Hotfixes für Bugs


Wenn ein Bug gefunden wird, muss die entsprechende Korrektur so schnell wie möglich zu den Endbenutzern gelangen. Angenommen, ein Entwickler hat begonnen, an einem neuen Feature zu arbeiten. Während der Entwicklung findet er einen Bug, der bereits vorhanden war. Er erstellt einen expliziten Commit als Patch für diesen Bug. Der neue Patch-Commit kann per Cherry-Pick direkt auf den main-Branch angewendet werden, um den Bug zu beheben, bevor er sich auf noch mehr Benutzer auswirkt.

Rückgängigmachen von Änderungen und Wiederherstellen verloren gegangener Commits


Manchmal wird ein feature-Branch vergessen und nicht in den main gemergt. Es kann auch vorkommen, dass eine Pull-Anfrage ohne Merge geschlossen wird. In Git gehen diese Commits jedoch nicht verloren. Mit Befehlen wie git log und git reflog können sie wiedergefunden und per Cherry-Pick reaktiviert werden.

Wie kannst du Git Cherry-Pick verwenden?


Um die Verwendung von git cherry-pick zu demonstrieren, gehen wir davon aus, dass wir ein Repository mit folgendem Branch-Status haben:

    a - b - c - d   Main
         \
           e - f - g Feature

git cherry-pick ist in der Verwendung unkompliziert. Ein Beispiel könnte folgendermaßen aussehen:

git cherry-pick commitSha

In diesem Beispiel ist "commitSha" eine Commit-Referenz. Du kannst mit git log nach Commit-Referenzen suchen. In diesem Beispiel möchten wir den Commit "f" im main verwenden. Zunächst müssen wir sicherstellen, dass wir uns im main-Branch befinden.

git checkout main

Dann führen wir mit folgendem Befehl den Cherry-Pick durch:

git cherry-pick f

Nach der Ausführung sieht der Git-Verlauf so aus:

    a - b - c - d - f   Main
         \
           e - f - g Feature

Der f-Commit wurde per Cherry-Pick erfolgreich auf den Main-Branch angewendet.

Beispiele für Git Cherry-Pick


git cherry pick kann auch in Kombination mit verschiedenen Ausführungsoptionen eingesetzt werden.

-edit

Mit Übergabe der Option -edit fragt Git vor dem Anwenden des Cherry-Picks nach einer Commit-Nachricht.

--no-commit

Mit der Option --no-commit wird der Cherry-Pick-Vorgang ebenfalls durchgeführt. Aber anstatt einen neuen Commit zu erstellen, werden die Inhalte des Ziel-Commits in das Arbeitsverzeichnis des aktuellen Branch verschoben.

--signoff

Mit der Option --signoff wird am Ende der Cherry-Pick-Commit-Nachricht eine "Signoff"-Signaturzeile hinzugefügt.

Neben diesen praktischen Optionen sind bei git cherry-pick auch verschiedene Merge-Strategieoptionen verfügbar. Mehr über diese Optionen erfährst du in der Dokumentation zu Git-Merge-Strategien.

"git cherry-pick" akzeptiert auch Optionen zum Beheben von Merge-Konflikten, darunter die Optionen --abort --continue und --quit. Diese Optionen werden im Zusammenhang mit git merge und git rebase eingehender behandelt.

Zusammenfassung


Cherry-Pick ist ein hilfreicher und praktischer Befehl, der in einigen Szenarien viele Vorteile hat. Er sollte jedoch nicht verwendet werden, wenn eigentlich git merge oder git rebase erforderlich sind. Mit dem Befehl git log kannst du nach den Commits für den Cherry-Pick suchen.


Diesen Artikel teilen
Nächstes Thema

Lesenswert

Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.

Mitarbeiter arbeiten mit unzähligen Tools zusammen

Bitbucket-Blog

Abbildung: DevOps

DevOps-Lernpfad

Demo Den: Feature-Demos mit Atlassian-Experten

So funktioniert Bitbucket Cloud mit Atlassian Open DevOps

Melde dich für unseren DevOps-Newsletter an

Thank you for signing up