git Cherry-Pick ist ein einfaches, aber leistungsstarkes Tool, mit dem Sie selektiv Übertragung von Commits von einem Branch in einen anderen. Sie können es verwenden, wenn Sie nicht einen ganzen Branch in den Master zusammenführen möchten, aber dennoch Änderungen aus einem Feature-Branch einschließen möchten.
Was ist Git Cherry Pick und wie funktioniert es?
In Git sind Commits die Einheiten, die Änderungen im Laufe der Zeit verfolgen. Jeder Commit kann eine Fehlerbehebung, ein neues Feature oder einen Teil einer größeren Lösung darstellen. Sie können sich Commits vorstellen, die als verknüpfte Liste gespeichert werden, die in die Vergangenheit zeigt. Immer wenn Sie Ihren Branch HEAD ändern, rekonstruiert Git Ihre lokalen Verzeichnisdateien, indem alle Commits bis zum Anfang berücksichtigt werden.
Dies ist natürlich eine Vereinfachung, und Git speichert Commits technisch nicht als einfache Änderungslisten, es verwendet dateibasierte Blobs, aber das Prinzip ist das gleiche.
Komplizierter wird es, wenn Zweigstellen ins Spiel kommen. Die Arbeit an einem Feature dauert oft viele Tage oder Wochen. Anstatt das Haupt-Repository zu überladen, geht es in einen separaten Feature-Branch und wird dann Code überprüft und wieder zusammengeführt. Das Zusammenführen ist im Grunde eine Verzweigung dieses Commit-Verlaufs, so dass der gesamte Feature-Branch eingeschlossen wird, wenn Git seine Arbeit macht.
Was aber, wenn Sie einige Dinge zusammenführen möchten, aber nicht 8217;möchten Sie noch nicht, dass der gesamte Zweig aufgenommen wird? In diesem Fall können Sie git merge nicht ausführen.
Werbung
Hier wird git Cherry-Pick nützlich. Es tut, was der Name schon sagt: Es nimmt einen einzelnen Commit aus dem Feature-Branch, wählt ihn einzeln aus und wendet ihn auf den Master-Branch an oder umgekehrt. Dadurch wird der Commit kopiert, sodass es einen brandneuen Commit im Ziel-Branch gibt.
Beachten Sie, dass es keine echte “Linie” Verbinden des neuen Commits im Master-Zweig mit dem alten Commit. Der neue Cherry-Picked-Commit, der auf master erstellt wurde, verweist überhaupt nicht auf den Quell-Commit, der Commit wird einfach kopiert. Git kümmert sich darum, wenn Sie die Branches wieder zusammenführen, da die Commits als Kopien voneinander betrachtet werden.
Faktisch wird der Commit “übertragen” auf den neuen Branch übertragen, wobei Sie beachten müssen, dass der alte Commit immer noch auf den Feature-Branch angewendet wird. Sie möchten den Quell-Commit jedoch nicht rückgängig machen, da dies beim späteren Zusammenführen zu Problemen führt.
Warum Cherry Pick?
Dafür gibt es einige Anwendungsfälle. Vielleicht arbeiten Sie an einem Feature, das noch nicht zur Veröffentlichung bereit ist, aber Sie haben einen Fehler im Feature-Branch behoben, den Sie gerne in Ihre wöchentliche Release-Version aufnehmen möchten. Sie können den Bugfix per Cherry-Pick nach Master kopieren, um ihn frühzeitig bereitzustellen.
Oder vielleicht haben Sie mehrere Zweige für Produktion und Entwicklung und möchten einen dringenden Bugfix von . kopieren Produktion bis zur Entwicklung. Rosinenpick kann das auch.
Oder Sie haben vielleicht sogar aus Versehen einen Commit in den falschen Branch gemacht. Sie können es mit git Cherry-Pick auf das richtige kopieren und dann mit git reset um diesen Commit rückgängig machen (vorausgesetzt, er befindet sich im HEAD des Branch).
Git Cherry Pick verwenden
Sobald Sie verstehen, was Sie tun, ist git Cherry-Pick ziemlich einfach zu bedienen.
Werbung
Der einfachste Weg, den Commit-Verlauf von Git auf der Befehlszeile anzuzeigen, ist mit dem folgenden Befehl, der alle Commits anzeigt, jedoch mit einem Branch- und Merge-Verlauf, der für die Verwendung von Cherry-Pick entscheidend ist:
git log – -pretty=format:”%h %s” –graph
Dann , können Sie einfach den SHA1-Hash des Commits kopieren und die Kirsche auswählen:
git Cherry-pick 1da76d3
Beachten Sie, dass Sie auch mehrere Commits gleichzeitig auswählen können, indem Sie einfach mehrere Hashes übergeben.
git Cherry-Pick hat einige nützliche Optionen:
- –no-commit wendet die Änderungen nur auf Ihr Verzeichnis an. Sie müssen das Staging und den Commit manuell durchführen.
- –edit ermöglicht Ihnen, die Commit-Nachricht zu ändern.
- -x fügt eine Nachricht mit der Aufschrift “Kirsche aus dem Commit ausgewählt: …”
Wenn Sie natürlich einen GUI-basierten Git-Client wie Fork oder GitKraken verwenden, was wir sehr empfehlen, können Sie einfach mit der rechten Maustaste auf den Commit und wählen Sie die Rosinenauswahl: