Was macht Git Cherry Pick und wann sollte ich es verwenden?

Inhalt

Git-Logo

git cherry-pick ist ein einfaches, aber leistungsstarkes Tool, mit dem Sie selektive Commits von einem Branch in einen anderen übertragen können. Sie können es verwenden, wenn Sie nicht einen ganzen Zweig mit dem Master zusammenführen möchten, Sie möchten aber trotzdem Änderungen aus einem Funktionszweig einbinden.

Was ist Git Cherry Pick und wie funktioniert es?

Top Go, Commits sind die Einheiten, die Änderungen im Laufe der Zeit verfolgen. Jeder Commit kann einen Bugfix darstellen, ein neues Feature oder Teil einer größeren Lösung. Sie können sich gespeicherte Commits als eine verknüpfte Liste vorstellen, die in die Vergangenheit zeigt; jedes Mal, wenn Sie den HEAD Ihrer Filiale wechseln, Git erstellt die Dateien in Ihrem lokalen Verzeichnis neu und berücksichtigt dabei alle Commits, die zum Anfang zurückgehen.

Das ist eine Vereinfachung, auf jeden Fall, und Git speichert Commits technisch nicht als einfache Änderungslisten, dateibasierte Blobs verwenden, aber das prinzip ist das gleiche.

Kompliziert wird es, wenn Filialen ins Spiel kommen. Häufig, die Arbeit an einer Rolle dauert mehrere Tage oder Wochen. Anstatt das Haupt-Repository durcheinander zu bringen, in einen separaten Feature-Branch verschieben, und dann wird der Code überprüft und wieder zusammengeführt. Beim Zusammenführen wird einfach dieser Commit-Verlauf verzweigt, sodass der gesamte Feature-Zweig eingeschlossen wird, wenn Git seine Arbeit macht.

Trotz dieses, Was ist, wenn Sie einige Dinge zusammenführen möchten?, aber du willst noch nicht den ganzen Zweig enthalten? Du kannst nicht tun git merge dann.

Das ist wo git cherry-pick wird nützlich. Tut was der Name vermuten lässt: nimmt einen einzelnen Commit aus dem Feature-Branch, wählt es einzeln aus und wendet es auf den Master-Zweig an, oder umgekehrt. Dies kopiert die Bestätigung, es gibt also einen neuen Commit im Ziel-Branch.

Bitte beachten Sie, dass es keinen gibt “Leitung” real, der die neue Bestätigung im Masterzweig mit der vorherigen Bestätigung verbindet. Die sorgfältig ausgewählte neue Bestätigung, die im Master erstellt wurde, bezieht sich überhaupt nicht auf die Herkunftsbestätigung, die Bestätigung wird einfach kopiert. Git kümmert sich darum, wenn Sie die Branches wieder zusammenführen, weil Commits wie Kopien voneinander aussehen.

In der Tat, Die Bestätigung ist “Überträgt” zur neuen Filiale, auch wenn Sie darauf achten sollten, dass die obige Bestätigung weiterhin für den Merkmalszweig gilt. Trotz dieses, Sie möchten die Herkunftsbestätigung nicht stornieren, da das später beim Zusammenführen zu Problemen führt.

Warum Rosinenpick?

Dafür gibt es einige Anwendungsfälle. Vielleicht arbeitest du an einem Feature und es ist noch nicht startbereit, aber Sie haben einen Fehler im Funktionszweig behoben, den Sie in Ihre wöchentliche Release-Version aufnehmen möchten. Sie können die selektive Auswahl verwenden, um Fehlerkorrekturen in den Master zu kopieren, um sie früher zu implementieren.

Oder vielleicht haben Sie mehrere Niederlassungen für Produktion und Entwicklung, und möchten einen dringenden Bugfix von der Produktion in die Entwicklung kopieren. Kirschpick kann das auch.

Oder es ist möglich, dass Sie sich sogar versehentlich in der falschen Filiale festgelegt haben. Sie können verwenden git cherry-pick um es nach rechts zu kopieren, und dann git reset um diese Bestätigung rückgängig zu machen (solange es sich im HEAD der Filiale befindet).

Verwenden von Git Cherry Pick

Sobald du verstehst was du tust, git cherry-pick es ist ganz einfach zu bedienen.

Der einfachste Weg, den Git-Commit-Verlauf auf der Befehlszeile anzuzeigen, ist mit dem folgenden Befehl, die alle Commits anzeigt, aber mit einer Historie von Forks und Merges, was entscheidend ist, um Rosinenpicker zu verwenden:

git log --pretty=format:"%h %s" --Graph

Nach, Sie können einfach den SHA1-Hash aus dem Commit kopieren und die Kirsche auswählen:

git Kirsche-Pick 1da76d3

Beachten Sie, dass Sie auch mehrere Bestätigungen gleichzeitig auswählen können, Übergeben Sie einfach mehrere Hashes.

git cherry-pick hat einige nützliche Optionen:

  • --no-commit Übernehmen Sie einfach die Änderungen in Ihrem Verzeichnis. Sie müssen manuell vorbereiten und bestätigen.
  • --edit ermöglicht es Ihnen, die Bestätigungsnachricht zu ändern.
  • -x fügt eine Nachricht hinzu, die besagt, dass “Rosinenpickerei von Commit: …”

Natürlich, wenn Sie einen GUI-basierten Git-Client verwenden, wie Gabel Ö GitCrack, was wir dringend empfehlen, Sie können mit der rechten Maustaste auf die Verpflichtung klicken und sie auswählen.:

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.