wake-up-neo.com

Was bedeutet es, mit Git ein Commit zu machen?

Kürzlich wurde ich gebeten, cherry-pick festzuschreiben.

Was bedeutet also das Auswählen eines Commits in git? Wie geht das?

1967
Rahul

Cherry Picking in Git bedeutet, ein Commit aus einem Zweig auszuwählen und auf einen anderen anzuwenden.

Dies steht im Gegensatz zu anderen Methoden 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>
    

NB .:

  1. Wenn Sie aus einer öffentlichen Filiale auswählen, sollten Sie die Verwendung in Betracht ziehen

    git cherry-pick -x <commit-hash>
    

    Dadurch wird eine standardisierte Festschreibungsnachricht generiert. Auf diese Weise können Sie (und Ihre Mitarbeiter) weiterhin den Ursprung des Commits verfolgen und Zusammenführungskonflikte in Zukunft vermeiden.

  2. Wenn Sie dem Commit Notizen beigefügt haben, folgen diese nicht dem Cherry-Pick. Um sie auch herüberzubringen, müssen Sie verwenden:

    git notes copy <from> <to>
    

Zusätzliche Links:

2382
Philip Fourie

Dieses Zitat stammt von; Versionskontrolle mit Git (Wirklich tolles Buch, ich empfehle dir es zu kaufen, wenn du an Git interessiert bist)

Edit: Da diese Antwort immer noch Eindruck macht, möchte ich sehr Nizza in Aktion Video Tutorial dazu hinzufügen:

Youtube: Einführung in Git Cherry-Pick

Verwenden von git cherry-pick Der Befehl git cherry-pick commit wendet die Änderungen an, die durch das genannte Festschreiben für den aktuellen Zweig eingeführt wurden. Es wird ein neues, eindeutiges Commit eingeführt. Genau genommen ändert die Verwendung von git cherry-pick nichts an der vorhandenen Historie in einem Repository. Stattdessen wird die Historie erweitert. Wie bei anderen Git-Vorgängen, die Änderungen über den Vorgang des Anwendens eines Diffs einführen, müssen Sie möglicherweise Konflikte lösen, um die Änderungen aus dem angegebenen Commit vollständig anzuwenden. Der Befehl git cherry-pick wird normalerweise verwendet, um bestimmte Commits aus einem Zweig in einem Repository in einen anderen Zweig einzufügen. Eine häufige Verwendung ist das Weiterleiten oder Zurückportieren von Commits von einem Wartungszweig zu einem Entwicklungszweig.

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

vor: before

nach: after

269
Teoman shipahi

Cherry Picking in Git wurde entwickelt, um ein Commit von einem Zweig in einen anderen Zweig zu übertragen. Es kann getan werden, wenn Sie z. hat einen Fehler gemacht und einen Wechsel in den falschen Zweig vorgenommen, möchte aber nicht den gesamten Zweig zusammenführen. Sie können einfach z. Machen Sie das Commit rückgängig und wählen Sie es in einem anderen Zweig aus.

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

Das vollständige Verfahren finden Sie unter: http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html

146
Tadeck

kurzes Beispiel für eine Situation, in der Sie einen Kirschpflücker brauchen

Stellen Sie sich folgendes Szenario vor. Sie haben zwei Niederlassungen.

a) release1 - Dieser Zweig geht an Ihren Kunden, aber es sind noch einige Fehler zu beheben.

b) master - Klassischer Master-Zweig, in dem Sie beispielsweise Funktionen für Release2 hinzufügen können.

NOW: Sie korrigieren etwas in release1. Natürlich benötigen Sie diesen Fix auch in master. Und das ist ein typischer Anwendungsfall für die Kirschernte. Cherry Pick in diesem Szenario bedeutet also, dass Sie ein Commit vom Zweig release1 annehmen und es in den Zweig master aufnehmen.

74
Daniel Perník

cherry-Pick ist eine Git-Funktion. Wenn jemand bestimmte Commits in einem Zweig an einen Zielzweig übergeben möchte, wird cherry-pick verwendet.
Git Cherry-Pick-Schritte sind wie folgt.

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

    Hier ist die Festschreibungs-ID die Aktivitäts-ID eines anderen Zweigs.

    git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f
    
  3. Zum Zielzweig schieben

Besuchen Sie https://git-scm.com/docs/git-cherry-pick

49
Vijay S B

Man kann sich vorstellen, dass ein Cherry Pick einer Rebase ähnelt oder eher wie eine Rebase gehandhabt wird. Damit meine ich, dass ein vorhandenes Commit übernommen und neu generiert wird, wobei als Ausgangspunkt der Leiter des Zweigs genommen wird, in dem Sie sich gerade befinden.

Ein rebase nimmt eine Übergabe an, die ein übergeordnetes X hatte, und generiert die Übergabe neu, als hätte sie tatsächlich ein übergeordnetes Y, und genau das tut ein cherry-pick.

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

Die Art und Weise, wie Sie dies tun, ist also unterschiedlich, aber unter der Haube handelt es sich um sehr ähnliche Vorgänge - die Regeneration von Commits.

20
Hugh

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

Wenn Sie beispielsweise einen Hotfix ausführen möchten, können Sie die Funktion cherry-pick verwenden.

Führen Sie Ihren cherry-pick in einem Entwicklungszweig und merge durch, die sich auf einen Veröffentlichungszweig festlegen. Führen Sie ebenfalls einen cherry-pick von einem Release-Zweig zum Master aus. Voila

9
Ajeet Sharma

Wenn Sie mit einem Entwicklerteam an einem Projekt arbeiten, kann die Verwaltung der Änderungen zwischen mehreren Git-Zweigen zu einer komplexen Aufgabe werden. Manchmal möchten Sie nicht einen ganzen Zweig in einem anderen zusammenführen und müssen nur ein oder zwei bestimmte Commits auswählen. Dieser Vorgang wird als "Kirschernte" bezeichnet.

Sie haben einen großartigen Artikel zum Thema Kirschenpflücken gefunden. Weitere Informationen finden Sie hier: https://www.previousnext.com.au/blog/intro-cherry-picking-git

8
Wolfack

Wenn Sie ohne Festschreibungs-IDs zusammenführen möchten, können Sie diesen Befehl verwenden

git cherry-pick master~2 master~0

Mit dem obigen Befehl werden die letzten drei Commits des Masters von 1 auf 3 zusammengeführt

Wenn Sie dies für einmaliges Festschreiben tun möchten, entfernen Sie einfach die letzte Option

git cherry-pick master~2

Auf diese Weise führen Sie das dritte Commit ab dem Ende des Masters zusammen.

5
Bills