Illustration: Git Cherry-Pick

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.

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 master-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

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 master verwenden. Zunächst müssen wir sicherstellen, dass wir uns im master-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

The f commit has been successfully picked into the master branch

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

Zusammenfassung