Git

Rosinenpick in Git

Rosinenpick in Git
git Cherry Pick ist eine Merge-Funktion von Git. Aber es gibt einen kleinen Unterschied zwischen Git Cherry Pick und Git Merge. Auch der Anwendungsfall ist anders. Sehen wir uns zuerst an, wie git merge funktioniert, und vergleichen Sie es dann mit git Cherry Pick. Auf diese Weise werden Sie verstehen, wann Sie Git Merge und wann Git Cherry Pick verwenden sollten.

Nehmen wir an, Sie haben ein Git-Repository. Du arbeitest an der Meister Branch und Sie haben ein paar Commits (A, B und C) auf der Meister auch Filiale.

Jetzt hast du plötzlich eine tolle Idee. Sie erstellen also einen weiteren Zweig neue Idee. Dann fingen Sie an, Commits zu machen (E, F und G) Dort.

Sie haben auch einige Änderungen an der vorgenommen Meister Branch wieder und fügte einen neuen Commit hinzu H.

Wenn Ihre neue Idee nun ein Erfolg ist, möchten Sie sie vielleicht zusammenführen neue Idee verzweigen Sie in die Meister Ast. Sagen wir, du hast es zusammengeführt. Es wird ein neues Commit erstellt ich wie Sie in der Abbildung unten sehen können. Der neue Commit wird alles enthalten (alle Änderungen in den Commits E, F, und G) der Filiale neue Idee.

Nehmen wir an, Sie möchten nicht alle Commits des Branchs zusammenführen neue Idee zum Meister Ast. Sie möchten nur die Änderungen (nur die Diff-Änderungen) im Commit zusammenführen F zum Meister Ast. Hier kommt Git Cherry Pick ins Spiel. Mit Git Cherry Pick kannst du das tun. Sie finden einfach den Hash des Commits, den Sie auswählen möchten, und wenden ihn auf den gewünschten Zweig an. Sehr einfach.

In diesem Artikel zeige ich dir, wie du in Git . Rosinen pflücken kannst. Also lasst uns anfangen.

Git Cherry Pick-Workflow:

In diesem Abschnitt werde ich ein Git-Repository so einrichten, dass Sie verstehen, warum Git Cherry Pick verwendet wird und wie man in Git die Cherry Picks verwendet.

Initialisieren Sie zunächst ein leeres Git-Repository Rosinenpick-Demo/ wie folgt:

$ git init Cherry-Pick-Demo

Navigieren Sie nun wie folgt zum Repository:

$ CD Rosinenpick-Demo/

Erstellen Sie nun a Main.c Datei mit folgendem Inhalt:

Fügen Sie die Datei nun wie folgt zum Staging-Bereich hinzu:

$ git hinzufügen .

Übertragen Sie nun die Änderungen wie folgt:

$ git commit -m 'erster Commit'

Erstellen Sie nun a .gitignore Datei mit folgendem Inhalt:

Fügen Sie die Datei zum Staging-Bereich hinzu.

$ git hinzufügen .

Übernehmen Sie die Änderungen:

$ git commit -m 'hinzugefügt .gitignore-Datei'

Wie ihr sehen könnt, habe ich jetzt 2 Commits in meinem Meister Ast.

$ git log --oneline

Jetzt möchte ich mein lokales Git-Repository auf einen entfernten Git-Server verschieben, damit andere Leute an diesem Repository arbeiten können. Sie können GitHub auch hier verwenden. Ich werde dafür hier einen lokalen SSH-Server verwenden.

Fügen Sie also eine Remote-Git-Repository-URL wie folgt hinzu:

$ git remote hinzufügen origin [email protected]:~/cherry-pick-demo.git

Drücken Sie jetzt die Meister Verzweigen Sie wie folgt in das entfernte Git-Repository:

$ git push origin master

Sagen wir jetzt Bob möchte zum Projekt beitragen. Also hat er das Git-Repository auf seinem Computer geklont.

$ git clone [email protected]:~/cherry-pick-demo.git meinprojekt

Bob navigiert nun zu seinem Projektverzeichnis.

$ cd meinProjekt/

Er hat auch die 2 Commits, die ich hinzugefügt habe.

$ git log --oneline

Jetzt erstellt Bob a Prüfung Filiale um seine Ideen auszuprobieren.

$ git checkout -b test

Er beschließt, den Rückgabewert mit einer Konstanten zu ändern EXIT_SUCCESS von dem stdlib Bibliothek.

Er fügt die Änderungen dem Staging-Bereich hinzu.

$ git hinzufügen .

Bestätigt die Änderungen.

$ git commit -m 'exIT_SUCCESS anstelle von 0 als Rückgabewert verwendet'

Jetzt beschließt er, eine Funktion zu verwenden printMessage() um die Nachricht auszudrucken. Also schreibt er die Funktion.

Er begeht die Änderungen erneut.

$ git hinzufügen .
$ git commit -m 'printMessage()-Funktion hinzugefügt'

Dann verwendet Bob die Funktion im Programm.

Er begeht die Änderungen erneut.

$ git hinzufügen .
$ git commit -m 'hat die printMessage()-Funktion verwendet, um die Nachricht zu drucken'

Bob hat jetzt die folgenden Commits in der Prüfung Ast.

Jetzt schiebt bob den Testzweig in das Git-Remote-Repository.

$ git push Ursprungstest

Jetzt ruft Bob dich an und erzählt dir von den großartigen Veränderungen, die er vorgenommen hat. Sie haben also die Änderungen am Git-Remote-Repository in Ihr eigenes lokales Repository geholt.

$ git holen

Jetzt sehen Sie eine neue Filiale Herkunft/Test.

Du hast auch 3 neue Commits gefunden, die Bob gemacht hat.

$ git log --oneline origin/test

Jetzt möchten Sie wissen, welche Änderungen Bob vorgenommen hat.

$ git log -p origin/test

Sie entscheiden sich, den Rückgabewert nicht durch EXIT_SUCCESS zu ersetzen, wie es Bob getan hat.

Sie mögen das Konzept, eine Funktion zum Drucken von Nachrichten zu verwenden.

Dir gefällt dieser Commit auch.

Sie möchten also 2 der 3 Commits zusammenführen, die Bob gemacht hat. Wenn Sie git merge verwendet haben, um den Branch-Test zusammenzuführen, werden alle 3 Commits angewendet. Aber mit der Git Cherry Pick-Funktion können Sie nur die Commits zusammenführen, die Ihnen gefallen.

Beachten Sie, dass Sie beim Rosinenpicken von Commits in Git immer mit dem ältesten Commit beginnen und nach und nach zum neuesten übergehen.

Vorher habe ich Kirschen gepflückt, die Main.c Datei sieht wie folgt aus.

Wählen wir nun den ältesten der beiden Commits, 9a4e532, wie folgt aus:

$ git Rosinenpick 9a4e532

Ein Zusammenführungskonflikt! Das kann passieren.

Öffnen Sie nun die Main.c Datei und beheben Sie den Zusammenführungskonflikt.

Die endgültige Datei sollte wie folgt aussehen.

Fügen Sie nun die Änderungen zum Staging-Bereich hinzu.

$ git hinzufügen.

Übertragen Sie nun die Änderungen wie folgt:

$ git Cherry-Pick --weiter

HINWEIS: Sie können auch verwenden git-commit hier auch. Es liegt an dir. ich bevorzuge git Rosinenpick - weiter da es automatisch die Commit-Nachricht aus dem Commit verwendet, das ich am Rosinen wähle.

Geben Sie nun Ihre Commit-Nachricht hier ein und speichern Sie die Datei.

Ein neuer Commit sollte hinzugefügt werden.

Wählen Sie nun den nächsten Commit wie folgt aus:

$ git Rosinenpick 08ba5e7

Kein Zusammenführungskonflikt. Groß! Ein neuer Commit sollte automatisch hinzugefügt werden.

Wie ihr seht bekomme ich genau das was ich wollte. Ich habe nur die Commits zusammengeführt, die ich brauchte.

So nimmst du die Rosinen in Git. Danke, dass du diesen Artikel gelesen hast.

Kostenlose und Open-Source-Spiele-Engines für die Entwicklung von Linux-Spielen
Dieser Artikel behandelt eine Liste von kostenlosen und Open-Source-Spiele-Engines, die für die Entwicklung von 2D- und 3D-Spielen unter Linux verwend...
Shadow of the Tomb Raider für Linux Tutorial
Shadow of the Tomb Raider ist die zwölfte Erweiterung der Tomb Raider-Reihe – ein Action-Adventure-Franchise von Eidos Montrealdos. Das Spiel wurde vo...
So steigern Sie die FPS unter Linux?
FPS steht für Bilder pro Sekunde. Die Aufgabe von FPS besteht darin, die Bildrate bei Videowiedergaben oder Spielleistungen zu messen. In einfachen Wo...