Git Cherry Pick

git cherry-pick ist ein leistungsfähiger Befehl, der es ermöglicht, beliebige Git-Commits per Referenz auszuwählen und an den aktuellen Arbeits-HEAD anzuhängen. Beim Cherry Picking wird ein Commit aus einem Zweig ausgewählt und auf einen anderen angewendet. git cherry-pick kann nützlich sein, um Änderungen rückgängig zu machen. Angenommen, ein Commit wird versehentlich im falschen Zweig durchgeführt. Sie können zum richtigen Zweig wechseln und den Commit dorthin verschieben, wo er hingehört.

Wann sollte man Git Cherry Pick verwenden

git cherry-pick ist ein nützliches Werkzeug, aber nicht immer die beste Praxis. Cherry Picking kann zu doppelten Commits führen und in vielen Szenarien, in denen Cherry Picking funktionieren würde, werden stattdessen traditionelle Merges bevorzugt. In diesem Sinne ist git cherry-pick ein praktisches Werkzeug für einige Szenarien…

Zusammenarbeit im Team

Es kommt oft vor, dass einzelne Mitglieder eines Teams am gleichen Code arbeiten. Vielleicht hat eine neue Produktfunktion eine Backend- und eine Frontend-Komponente. Möglicherweise gibt es einen gemeinsamen Code zwischen den beiden Produktbereichen. Vielleicht erstellt der Backend-Entwickler eine Datenstruktur, die auch vom Frontend genutzt werden muss. Der Frontend-Entwickler könnte git cherry-pick verwenden, um den Commit zu wählen, in dem diese hypothetische Datenstruktur erstellt wurde. Dieser Pick würde es dem Frontend-Entwickler ermöglichen, mit seiner Seite des Projekts fortzufahren.

Bug Hotfixes

Wenn ein Bug entdeckt wird, ist es wichtig, den Endbenutzern so schnell wie möglich einen Fix zu liefern. Ein Beispielszenario: Ein Entwickler hat mit der Arbeit an einer neuen Funktion begonnen. Während der Entwicklung dieser neuen Funktion wird ein bereits vorhandener Fehler entdeckt. Der Entwickler erstellt einen expliziten Commit, der diesen Fehler behebt. Dieser neue Patch-Commit kann direkt auf den master-Zweig übertragen werden, um den Fehler zu beheben, bevor er sich auf weitere Benutzer auswirkt.

Änderungen rückgängig machen und verlorene Commits wiederherstellen

Manchmal kann ein feature-Zweig veralten und nicht in master zusammengeführt werden. Manchmal wird ein Pull-Request geschlossen, ohne zusammengeführt zu werden. Git verliert diese Commits nie und durch Befehle wie git log und git reflog können sie gefunden und wieder zum Leben erweckt werden.

Wie benutzt man Git Cherry Pick

Um zu demonstrieren, wie man git cherry-pick benutzt, nehmen wir an, wir haben ein Repository mit dem folgenden Branch-Status:

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

git cherry-pickDie Benutzung ist einfach und kann wie folgt ausgeführt werden:

git cherry-pick commitSha

In diesem Beispiel ist commitSha eine Commit-Referenz. Sie können eine Commit-Referenz finden, indem Sie git log verwenden. In diesem Beispiel, das wir konstruiert haben, nehmen wir an, wir wollten Commit `f` in master verwenden. Zuerst stellen wir sicher, dass wir auf dem Zweig master arbeiten.

git checkout master

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

git cherry-pick f

Nach der Ausführung wird unsere Git-History wie folgt aussehen:

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

Der Commit f wurde erfolgreich in den Master-Branch gepickt

Beispiele für git cherry pick

git cherry pick können auch einige Ausführungsoptionen übergeben werden.

-edit

Die Übergabe der Option -edit veranlasst git, nach einer Commit-Nachricht zu fragen, bevor die Cherry-Pick-Operation ausgeführt wird

--no-commit

Die Option --no-commit führt den Cherry Pick aus, aber anstatt einen neuen Commit zu machen, wird der Inhalt des Ziel-Commits in das Arbeitsverzeichnis des aktuellen Zweigs verschoben.

--signoff

Die Option --signoff fügt eine ’signoff‘-Signaturzeile am Ende der Cherry-Pick-Commit-Nachricht hinzu

Zusätzlich zu diesen hilfreichen Optionen akzeptiert git cherry-pick auch eine Vielzahl von Merge-Strategie-Optionen. Erfahren Sie mehr über diese Optionen in der Dokumentation von git merge strategies.

Zusätzlich akzeptiert git cherry-pick auch die Eingabe von Optionen zur Lösung von Konflikten beim Zusammenführen, dazu gehören die Optionen: --abort --continue und --quit Diese Optionen werden in Bezug auf git merge und git rebase ausführlicher behandelt.

Zusammenfassung

Cherry Picking ist ein mächtiger und bequemer Befehl, der in einigen Szenarien unglaublich nützlich ist. Cherry Picking sollte nicht anstelle von git merge oder git rebase missbraucht werden. Der Befehl git log ist erforderlich, um die zu entkernenden Übertragungen zu finden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.