Commits aus einem anderen Branch in Git kopieren
Beim Arbeiten in Git kommt der Punkt, an dem wir bestimmte, individuelle Commits aus einem Branch in unseren aktuellen HEAD
-Branch integrieren wollen. Dies kann daran liegen, dass der Kunde Änderungen an einem Produkt oder einen gemeldeten Fehler wünscht.
Entweder haben wir es irrtümlich festgeschrieben, oder wir wollen dieses Commit nicht mehr in unserem vorherigen Zweig und wollen es in unserem aktuellen HEAD
-Zweig.
Die Antwort auf das obige Problem ist CHERRY PICK. In den folgenden Abschnitten werden wir uns daher ausführlich mit dem cherry-pick
-Befehl befassen.
Commits aus einem anderen Branch in Git kopieren
Das Aufnehmen eines bestimmten Commits aus einem Zweig und das Kopieren in unseren aktuellen HEAD
-Zweig wird als Cherry Picking bezeichnet.
Git hat für diesen Zweck ein spezielles Kommando, nämlich Gits cherry-pick
-Kommando. Die andere Verwendung von Cherry-Picking besteht darin, bestimmte Änderungen anzuwenden, bevor wir eine Pull-Anforderung zusammenführen oder entwickeln.
Dies kann sehr nützlich sein, um Änderungen rückgängig zu machen.
In diesem Artikel wird das Rosinenpicken eines bestimmten Commits von einem Zweig in einen anderen erörtert.
Commits mit dem git log
Befehl ansehen
Zuerst werden wir das git log
verwenden, um zu untersuchen, welches Commit wir auswählen möchten. Das Folgende ist das Verzweigungsergebnis des Befehls git log
:
d23216 - 953222 - 953219 - aa3s36 - 532d37 [master]
\
76cada - 66ecb3 - b886a0 [feature]
Hier im feature
-Zweig gibt es einen Commit 66ecb3
aus einem anderen Zweig, den wir nur in unserem master
-Zweig haben wollen.
Lassen Sie uns dieses spezifische Commit herauspicken und in den aktuellen Zweig, den master
-Zweig, übertragen. Dann können wir diese Commit-Änderungen in Zukunft für unser Projekt verwenden.
Führen Sie den Befehl git cherry-pick
aus, um Commits zu kopieren
Hier kommt uns git cherry-pick
zu Hilfe. 66ecb3
ist die Kirsche, und wir wollen sie aus vielen Pushs herauspicken, die in der Vergangenheit gemacht wurden.
Lassen Sie uns es aus einem anderen Zweig auswählen, indem Sie den folgenden Befehl ausführen.
git checkout master
git cherry-pick 66ecb3
Sobald der oben aufgeführte Befehl erfolgreich ausgeführt wurde, fungiert nun 66ecb3
als neuer Commit in unserem Master-Zweig.
Also erstellte Git eine Kopie des Commit, die wir brauchten, mit den gleichen Commit-Meldungen und Änderungen im Zweig master
. Schließlich wird ein neuer Commit mit seiner neuen ID erstellt.
Aufräumen des anderen Zweigs mit dem Befehl git reset
Wenn wir zum feature
-Zweig wechseln, sehen wir denselben Commit an seiner alten Stelle. Dies liegt daran, dass Git es in den anderen Zweig kopiert hat, anstatt es zu verschieben.
Es hat das Original unberührt gelassen.
Jetzt verwenden wir zum Bereinigen und Rückgängigmachen den Befehl git reset
, nachdem wir den erforderlichen Zweig ausgecheckt haben.
$ git checkout Test
Switched to branch 'Test'
$ git reset --hard HEAD~1
HEAD is now at 66ecb3 Change the title and delete the error page
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