Cherry-Pick eine Commit in Git

Abdul Jabbar 30 Januar 2023
  1. Wann sollte man die Git cherry-pick verwenden?
  2. Git cherry-pick-Befehl
  3. Gelöschte Commits wiederherstellen und Änderungen in Git rückgängig machen
Cherry-Pick eine Commit in Git

cherry-pick ist ein sehr nützlicher Befehl, der in verschiedenen Szenarien bei der Verwendung von Git erstaunlich und sehr hilfreich ist. In Git ermöglicht uns der cherry-pick-Befehl, sortierte und getrennte Commits aus einem Branch in den aktuellen HEAD-Branch zu kombinieren.

Wir können es so erklären, dass wir einen Commit aus einem bestimmten Zweig auswählen und ihn in einen anderen Zweig übertragen. Dieser Befehl kann nützlich sein, um Änderungen in diesem Zweig rückgängig zu machen. Zum Beispiel, wenn ein Commit versehentlich in den unerwünschten Zweig verschoben wird. Wir können zum gewünschten Zweig wechseln und die Rosinen herauspicken, die sich versehentlich auf den gewünschten Zweig festlegen, wo er sein sollte.

Wann sollte man die Git cherry-pick verwenden?

Git cherry-pick ist ein mächtiges Werkzeug, kann aber nicht immer die beste Wahl sein. Wir sollten cherry-pick nicht üblich anwenden, da es leicht zu doppelten Commits führt, wenn wir mit diesem Befehl einen Commit in unseren HEAD-Zweig kombinieren.

Git ist dafür verantwortlich, einen neuen Commit mit den gleichen Anforderungen wie beim letzten Commit zu erstellen. Git cherry-pick sollte in einem Szenario verwendet werden, in dem wir die neuen Änderungen fälschlicherweise auf den falschen Zweig übertragen und sie in das Remote-Repository verschoben haben.

Nachdem wir es in das Remote-Repository gepusht haben, stellen wir fest, dass das gepushte Commit nicht auf einen bestimmten Zweig gepusht werden musste, also müssen wir den Git-Befehl cherry-pick verwenden, um dieses Commit anhand der eindeutigen ID auszuwählen und an das richtige zu übertragen Ast.

Wann immer wir die Möglichkeit haben, traditionelles Merge oder Rebase zum Kombinieren anzuwenden, sollten wir cherry-picking in Betracht ziehen, da cherry-pick für seltene Fälle reserviert werden muss, in denen Merge oder Rebase nicht anwendbar sind.

Git cherry-pick-Befehl

Wir müssen nur den Commit angeben, den wir in unseren aktuellen HEAD-Zweig aus dem Commit, den wir im falschen Zweig durchgeführt haben, kombinieren möchten. et12x8iu ist die Commit-ID, die wir angeben müssen, um ihn im aktuellen Zweig zu kombinieren.

Unten ist der Befehl, der das falsche Commit auf das neue letzte Commit überträgt.

$ git cherry-pick et12x8iu 

Auf diese Weise werden wir bestimmte Revisionen direkt in unseren derzeit ausgecheckten Zweig übernehmen.

Nehmen wir an, wir brauchen weiterhin einige Modifikationen in unserer Arbeit. In diesem Fall können wir auch den Git-Befehl verwenden, um nur die Änderungen des Commits in unsere Hauptarbeitskopie aufzunehmen, ohne sie direkt zu committen. Auf diese Weise gelangt es direkt in eine modifizierte Arbeitskopie, und wir können die Dateien gemäß unseren Anforderungen ändern.

Es folgt der Befehl, um den falschen Commit in unser Arbeitsverzeichnis zu bekommen:

$ git cherry-pick et12x8iu --no-commit

Gelöschte Commits wiederherstellen und Änderungen in Git rückgängig machen

Manchmal hat ein feature branch einige Komplikationen und wird nicht zu einem current branch kombiniert, und manchmal kann ein Pull-Request aufgrund unterschiedlicher Arbeitsanforderungen ohne Zusammenführung anhalten.

Die Besonderheit von Git ist, dass es diese Commits nie aus den Augen verliert, und durch einige Befehle wie git log und git reflog können sie erneut verfolgt und an ihren Platz zurückgepflückt werden, wo sie ursprünglich sein sollten Ort.

Wir können sagen, dass die Option cherry-pick nicht anstelle von git merge oder git-rebase verwendet werden sollte. Der Befehl git log kann angewendet werden, um zu helfen, Commits für die Rosinenauswahl in dem bestimmten Zweig auszusortieren.

Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

Verwandter Artikel - Git Commit