Frage Was bedeutet Rosinenpicking mit git?


Kürzlich wurde ich gebeten, einen Commit auszuwählen. Aber ich habe keine Ahnung was es bedeutet. Also was macht cherry picking ein Commit in git bedeuten? Wie machst du das?


1356
2018-02-18 07:20


Ursprung


Antworten:


Cherry picking in git bedeutet, einen Commit von einem Zweig zu wählen und ihn auf einen anderen anzuwenden.

Dies steht im Gegensatz zu anderen Möglichkeiten wie merge und rebase die normalerweise viele Commits auf einen anderen Zweig anwenden.

  1. Stellen Sie sicher, dass Sie sich in dem Zweig befinden, auf den Sie das Commit anwenden möchten.

    git checkout master
    
  2. Führen Sie Folgendes aus:

    git cherry-pick <commit-hash>
    

N.B .:

  1. Wenn Sie aus einer öffentlichen Niederlassung auswählen, sollten Sie in Betracht ziehen, sie zu verwenden

    git cherry-pick -x <commit-hash>
    

    Dies erzeugt eine standardisierte Commit-Nachricht. Auf diese Weise können Sie (und Ihre Mitarbeiter) den Ursprung des Commits verfolgen und Konflikte in der Zukunft vermeiden.

  2. Wenn Sie Notizen mit dem Commit versehen haben, folgen sie nicht dem Cherry-Pick. Um sie auch zu bringen, müssen Sie verwenden:

    git notes copy <from> <to>
    

Zusätzliche Links:


1621
2018-02-18 07:29



Dieses Zitat stammt aus; Versionskontrolle mit Git (Wirklich tolles Buch, ich ermutige Sie, es zu kaufen, wenn Sie an Git interessiert sind)

Edit: Da diese Antwort noch Eindruck bekommt, würde ich gerne ein sehr nettes in action Video Tutorial dazu hinzufügen:

Youtube: Einführung in Git Kirschbaum

Git cherry-pick verwenden Der Befehl git cherry-pick commit übernimmt die   Änderungen, die durch das benannte Commit für den aktuellen Zweig eingeführt werden. Es wird   Ein neues, eindeutiges Commit einführen. Streng genommen, mit Git   cherry-pick ändert die bestehende Historie innerhalb eines Repositories nicht;   stattdessen fügt es der Geschichte hinzu. Wie bei anderen Git-Operationen auch   Führen Sie Änderungen über den Prozess des Anwendens eines Diffs ein, das Sie möglicherweise benötigen   Konflikte lösen, um die Änderungen aus dem gegebenen Commit vollständig anzuwenden .   Der Befehl git cherry-pick wird typischerweise zum Einführen bestimmter verwendet   Commits von einem Zweig innerhalb eines Repositories auf einen anderen Zweig. EIN   Die übliche Verwendung besteht darin, Commits aus einer Wartung zu übermitteln   zu einem Entwicklungszweig verzweigen.

$ git checkout rel_2.3
$ git cherry-pick dev~2 # commit F, above

Vor: before

nach: after


180
2018-05-13 15:06



Cherry Picking in Git ist so konzipiert, dass einige Commits von einem Zweig in einen anderen Zweig übertragen werden. Es kann getan werden, wenn Sie z. einen Fehler gemacht und einen Wechsel in einen falschen Zweig vorgenommen, aber nicht den gesamten Zweig zusammenführen wollen. Sie können nur z. Setzen Sie das Commit zurück und wählen Sie es in einem anderen Zweig aus.

Um es zu benutzen, brauchen Sie nur git cherry-pick hash, woher hash ist ein Commit-Hash von einem anderen Zweig.

Für die vollständige Prozedur siehe: http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html


124
2018-02-18 07:29



Cherry-Pick ist eine Git-Funktion. Wenn jemand bestimmte Commits in einer Verzweigung an eine Zielverzweigung übergeben möchte, wird cherry-pick verwendet.
        Git Kirschen-Pick Schritte sind wie folgt.

  1. Zur Kasse gehen (wechseln zu) Zielzweig.
  2. git cherry-pick <commit id>
    

    Hier ist die Commit-ID die Aktivitäts-ID einer anderen Verzweigung.

    git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f
    
  3. Push to Ziel Zweig

Besuch https://git-scm.com/docs/git-cherry-pick


24
2017-08-24 09:39



Sie können sich denken, ob eine Cherry Pick ähnlich einer Rebase ist, oder eher wie eine Rebase. Damit meine ich, dass es ein existierendes Commit benötigt und es neu generiert, indem es als Ausgangspunkt den Leiter der Zweigstelle benutzt, auf der Sie sich gerade befinden.

EIN rebase nimmt ein Commit, das ein Elternteil X hatte und regeneriert das Commit, als ob es tatsächlich ein Elternteil Y hätte, und genau das ist a cherry-pick tut.

Beim Cherry Pick geht es mehr darum, wie Sie die Commits auswählen. Mit pull (Rebase), git regeneriert implizit Ihre lokalen Commits zusätzlich zu dem, was in Ihren Zweig gezogen wurde, aber mit cherry-pick Sie wählen explizit einige Commits aus und generieren sie implizit (sie) über Ihrer aktuellen Verzweigung neu.

Die Art und Weise, wie Sie es tun, unterscheidet sich, aber unter der Haube sind sie sehr ähnliche Operationen - die Regeneration von Commits.


7
2018-01-31 22:19



Es ist irgendwie wie Kopieren (von irgendwo) und Einfügen (irgendwo), aber für bestimmte Commits.

Wenn Sie beispielsweise einen Hotfix durchführen möchten, können Sie den cherry-pick Feature.

Machen Sie Ihre cherry-pick in einer Entwicklungsbranche, und merge das Commit zu einem Release-Zweig. Auch a cherry-pick von einem Release-Zweig zum Master. Voila


2
2017-10-07 11:55