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.
Zugehöriges Material
Verschieben eines vollständigen Git-Repositorys
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 "commit
Sha" 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.