Nehmen wir an, Sie haben ein Git -Repository. Sie arbeiten an der Meister Zweig und Sie haben ein paar Commits gemacht (A, B und C) auf der Meister auch Zweig.
Plötzlich haben Sie eine großartige Idee. Sie erstellen also einen anderen Zweig neue Idee. Dann haben Sie angefangen, Commits zu machen (E, f und g) Dort.
Sie haben auch einige Änderungen an der Meister Zweig erneut und fügte ein neues Komitee hinzu H.
Wenn Ihre neue Idee ein Erfolg ist, möchten Sie vielleicht das zusammenführen neue Idee Zweig zum Meister Zweig. Sagen wir, Sie haben es verschmolzen. Es wird ein neues Komitee schaffen ICH Wie Sie in der Abbildung unten sehen können. Das neue Commit enthält alles (alle Änderungen in den Commits E, F, Und G) des Zweigs neue Idee.
Sagen wir nun, Sie möchten nicht alle Commits des Zweigs zusammenführen neue Idee zum Meister Zweig. Sie möchten nur die Änderungen (nur die Diff -Änderungen) im Commit zusammenführen F zum Meister Zweig. Hier kommt Git Cherry Pick ins Spiel. Mit Git Cherry Pick können Sie das tun. Sie finden nur den Hash des Commits, den Sie Cherry auswählen möchten, und wenden Sie ihn auf die gewünschte Filiale an. Sehr einfach.
In diesem Artikel werde ich Ihnen zeigen, wie man in Git pickt. Also lasst uns anfangen.
Git Cherry Pick Workflow:
In diesem Abschnitt werde ich ein Git -Repository auf eine Weise einrichten, die Sie verstehen, warum Git Cherry Pick verwendet wird und wie man in Git pick.
Initialisieren Sie zunächst ein leeres Git -Repository Kirschpick-Demo/ folgendermaßen:
$ git init cherry-pick-Demo
Navigieren Sie nun wie folgt zum Repository:
$ CD Kirschpick-Demo/
Erstellen Sie jetzt eine hauptsächlich.C Datei mit folgenden Inhalten:
Fügen Sie nun die Datei wie folgt zum Staging -Bereich hinzu:
$ git add .
Beachten Sie nun die Änderungen wie folgt:
$ git Commit -m 'Erstes Commit' '
Erstellen Sie jetzt eine .Gitignore Datei mit dem folgenden Inhalt:
Fügen Sie die Datei in den Staging -Bereich hinzu.
$ git add .
Die Änderungen begehen:
$ git Commit -m 'hinzugefügt .Gitignore -Datei '
Wie Sie sehen können, habe ich jetzt 2 Commits in meinem Meister Zweig.
$ Git -Protokoll -Einmal
Jetzt möchte ich mein lokales Git -Repository auf einen Remote -Git -Server bringen, damit andere Personen an diesem Repository arbeiten können. Sie können auch hier GitHub verwenden. Ich werde hier einen lokalen SSH -Server dafür verwenden.
Fügen Sie also eine Remote -Git -Repository -URL wie folgt hinzu:
$ git remote hinzufügen origin [email protected]: ~/cherry-pick-Demo.Git
Schieben Sie jetzt die Meister Zweig zum Remote -Git -Repository wie folgt:
$ Git Push Origin Master
Nun, sagen wir Bob will zum Projekt beitragen. Also klonierte er das Git -Repository auf seinen Computer.
$ git klone [email protected]: ~/cherry-pick-Demo.Git MyProject
Jetzt navigiert Bob zu seinem Projektverzeichnis.
$ cd MyProject/
Er hat auch die 2 Commits, die ich hinzugefügt habe.
$ Git -Protokoll -Einmal
Jetzt schafft Bob a prüfen Zweig, um seine Ideen auszuprobieren.
$ git checkout -b -Test
Er beschließt, den Rückgabewert mit einer Konstante zu ändern Exit_success von dem stdlib Bibliothek.
Er fügt die Änderungen in den Staging -Bereich hinzu.
$ git add .
Begeht die Änderungen.
$ Git Commit -m 'Gebraucht exit_success anstelle von 0 als Rückgabewert'
Jetzt beschließt er, eine Funktion zu verwenden printmessage () Um die Nachricht zu drucken. Also schreibt er die Funktion.
Er begeht die Änderungen erneut.
$ git add .
$ Git Commit -m 'fügte PrintMessage () -Funktion' addiert '
Dann verwendet Bob die Funktion im Programm.
Er begeht die Änderungen erneut.
$ git add .
$ git Commit -m 'Gebrauchte PrintMessage () -Funktion zum Drucken der Nachricht'
Jetzt hat Bob die folgenden Commits in der prüfen Zweig.
Jetzt drückt Bob den Testzweig zum Git -Remote -Repository.
$ git push Ursprungstest
Jetzt ruft Bob Sie an und erzählt Ihnen von den großartigen Änderungen, die er vorgenommen hat. Daher haben Sie die Änderungen am Git Remote -Repository in Ihr eigenes lokales Repository abgerufen.
$ git holen
Jetzt sehen Sie einen neuen Zweig Herkunft/Test.
Sie haben auch 3 neue Commits gefunden, die Bob gemacht hat.
$ Git -Protokoll -Einschluss Ursprung/Test
Jetzt möchten Sie wissen, welche Änderungen Bob vorgenommen haben.
$ git log -p Origin/Test
Sie beschließen, den Rückgabewert nicht durch exit_success zu ersetzen wie Bob.
Sie mögen das Konzept der Verwendung einer Funktion zum Drucken von Nachrichten.
Sie mögen auch, dass dieses Commit.
Sie möchten also 2 aus den 3 Commits MAD FULLERGERGEN. Wenn Sie Git Fusion verwendet haben, um den Zweig -Test zusammenzuführen, würden alle 3 Commits angewendet. Mit Git Cherry Pick -Funktion können Sie jedoch nur die Commits zusammenführen, die Sie mögen.
Beachte.
Vorher habe ich Kirsche ausgewählt, die hauptsächlich.C Die Datei sieht wie folgt aus.
Lassen Sie uns nun die ältesten der 2 Commits wählen, 9A4E532 wie folgt:
$ Git Cherry-Pick 9A4E532
Ein Zusammenführungskonflikt! Dies kann passieren.
Öffnen Sie nun die hauptsächlich.C Datei und Behebung des Zusammenführungskonflikts.
Die endgültige Datei sollte wie folgt aussehen.
Fügen Sie nun die Änderungen in den Staging -Bereich hinzu.
$ git add.
Beachten Sie nun die Änderungen wie folgt:
$ git kirschpick-kontinue
NOTIZ: Sie können auch verwenden Git Commit hier auch. Es liegt an Ihnen. ich bevorzuge Git Cherry -Pick -Continue Da es automatisch die Commit -Nachricht vom Commit benutzt, bin ich Kirschpickelung.
Geben Sie nun Ihre Commit -Nachricht hier ein und speichern Sie die Datei.
Ein neues Commit sollte hinzugefügt werden.
Nun, Cherry wählen Sie den nächsten Commit wie folgt aus:
$ git kirschpick 08ba5e7
Kein Zusammenführungskonflikt. Großartig! Ein neues Commit sollte automatisch hinzugefügt werden.
Wie Sie sehen können, bekomme ich genau das, was ich wollte. Ich habe nur die Commits zusammengeführt, die ich brauchte.
So wählen Sie Cherry in Git aus. Danke, dass du diesen Artikel gelesen hast.