Git
Rosinenpickerei
Suche…
Einführung
Ein Kirschpick nimmt den Patch, der in einem Commit eingeführt wurde, und versucht, ihn in dem Zweig, in dem Sie sich gerade befinden, erneut anzuwenden.
Syntax
- git cherry-pick [--edit] [-n] [-m übergeordnete Nummer] [-s] [-x] [--ff] [-S [Schlüssel-ID]] Commit
- git cherry pick - weiter
- git cherry pick - quit
- git cherry pick --abort
Parameter
Parameter | Einzelheiten |
---|---|
-e, --edit | Mit dieser Option können Sie die Commit-Nachricht mit git cherry-pick dem Commit bearbeiten. |
-x | Hängen Sie beim Aufzeichnen des Commits eine Zeile mit der Aufschrift "(Kirsche aus Commit…)" an die ursprüngliche Commit-Nachricht an, um anzugeben, von welchem Commit diese Änderung aus dem Kirschbaum ausgewählt wurde. Dies geschieht nur für Kirschpickel ohne Konflikte. |
--ff | Wenn der aktuelle HEAD mit dem übergeordneten Element des Cherry-pick'ed Commit identisch ist, wird ein Schnellvorlauf zu diesem Commit ausgeführt. |
--fortsetzen | Setzen Sie den Vorgang unter Verwendung der Informationen in .git / Sequenzer fort. Kann verwendet werden, um nach dem Lösen von Konflikten in einem fehlgeschlagenen Cherry-Pick oder Revert fortzufahren. |
--Verlassen | Vergessen Sie den laufenden Vorgang. Kann verwendet werden, um den Sequencer-Status nach einem fehlgeschlagenen Cherry-Pick oder Revert zu löschen. |
--abbrechen | Brechen Sie den Vorgang ab und kehren Sie in den Zustand vor der Sequenz zurück. |
Kopieren eines Commits von einem Zweig in einen anderen
git cherry-pick <commit-hash>
wendet die in einem vorhandenen Commit vorgenommenen Änderungen auf einen anderen Zweig an und zeichnet ein neues Commit auf. Im Wesentlichen können Sie Commits von Zweig zu Zweig kopieren.
Gegeben der folgende Baum (Quelle)
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
\
76cada - 62ecb3 - b886a0 [feature]
Nehmen wir an, wir wollen b886a0
nach master kopieren (über 5a6057
).
Wir können rennen
git checkout master
git cherry-pick b886a0
Nun sieht unser Baum so aus:
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 - a66b23 [master]
\
76cada - 62ecb3 - b886a0 [feature]
Wobei das neue Commit a66b23
denselben Inhalt ( a66b23
, Commit-Nachricht) wie b886a0
(aber ein anderes übergeordnetes b886a0
). Beachten Sie, dass die b886a0
nur Änderungen dieses Commits (in diesem Fall b886a0
) und nicht alle Änderungen im Feature-Zweig übernimmt (dazu müssen Sie entweder Rebasierung oder Zusammenführen verwenden).
Einen Commit-Bereich von einem Zweig in einen anderen kopieren
git cherry-pick <commit-A>..<commit-B>
jedes Commit nach A und bis einschließlich B auf den gerade ausgecheckten Zweig.
git cherry-pick <commit-A>^..<commit-B>
Commit A und jedes Commit bis einschließlich B auf den derzeit ausgecheckten Zweig.
Überprüfen, ob ein Kirschpickel erforderlich ist
Bevor Sie mit dem Kirschpick-Vorgang beginnen, können Sie überprüfen, ob das Commit, das Sie zum Kirschpicken auswählen möchten, bereits im Zielzweig vorhanden ist. In diesem Fall müssen Sie nichts tun.
git branch --contains <commit>
listet lokale Zweigstellen auf, die den angegebenen Commit enthalten.
git branch -r --contains <commit>
enthält auch Remote Tracking-Zweige in der Liste.
Finden Sie Commits, die noch auf Upstream angewendet werden sollen
Der Befehl git cherry
zeigt die Änderungen, die noch nicht auserlesen wurden.
Beispiel:
git checkout master
git cherry development
... und sehen die Ausgabe ein bisschen so aus:
+ 492508acab7b454eee8b805f8ba906056eede0ff
- 5ceb5a9077ddb9e78b1e8f24bfc70e674c627949
+ b4459544c000f4d51d1ec23f279d9cdb19c1d32b
+ b6ce3b78e938644a293b2dd2a15b2fecb1b54cd9
Die Verpflichtung, mit +
sein, werden diejenigen sein, die noch nicht in die development
eingepfercht sind.
Syntax:
git cherry [-v] [<upstream> [<head> [<limit>]]]
Optionen:
-v Zeigt die Commit-Subjekte neben den SHA1s an.
<Upstream> Upstream-Zweig zur Suche nach äquivalenten Commits. Der Standardwert ist der Upstream-Zweig von HEAD.
<head> Arbeitszweig; Der Standardwert ist HEAD.
<limit> Keine Commits bis zum Limit (einschließlich) melden.
Überprüfen Sie die Git-Cherry-Dokumentation für weitere Informationen.