git Cherry-Pick-Befehl
Wenn Sie den Code von einer Verzweigung in eine andere Verzweigung verschieben möchten, ist die übliche Praxis die merge
or rebase
-Anweisung, aber wenn Sie ein Commit (oder einige) einer Verzweigung in eine andere Verzweigung verschieben möchten, müssen Sie die cherry-pick
Anweisung .
Artikelverzeichnis
1. Übertragen Sie ein Commit
Beispielsweise gibt es im Lager master
, feature-new
und feature-old
Filialen , wie in der folgenden Abbildung dargestellt:
Jetzt möchten feature-old
Sie den G-Commit von Zweig zu feature-new
Zweig anwenden. Führen Sie den folgenden Befehl aus:
# 假设现在在master分支
# 从master分支切换到feature-new(要接收别的分支某次提交转移的分支)
git checkout feature-new
# 执行转移操作:git cherry-pick <commitHash>
git cherry-pick G
Nach dem Ausführen des obigen Befehls sieht die Codebasis wie folgt aus:
Das heißt , ein neuer Commit G wurde am Endefeature-new
des Zweigs hinzugefügt.
Hinweis: cherry-pick
Der Parameter der Anweisung muss nicht der Hash-Wert des Commits sein, und der Zweigname ist ebenfalls akzeptabel, was darauf hinweist, dass der letzte Commit des Zweigs übertragen wird , wie folgt:
# 将feature-old分支的最新一次提交H转移到当前分支
git cherry-pick feature-old
2. Übertragen Sie einige Commits
git cherry-pick <commitHashA> <commitHashA>
Der obige Befehl wendet zwei Commits A und B auf den aktuellen Zweig an, was zu zwei entsprechenden neuen Commits im aktuellen Zweig führt.
Wenn Sie eine Reihe aufeinanderfolgender Commits übertragen möchten, können Sie die folgende Kurzschreibweise verwenden:
git cherry-pick A..B
Der obige Befehl kann alle Commits von A nach B übertragen , sie müssen in der richtigen Reihenfolge platziert werden: Commit A muss vor Commit B liegen, sonst schlägt der Befehl ohne Fehler fehl.
Hinweis: Mit dem obigen Befehl wird Commit A nicht cherry-pick
in . Wenn Sie Commit A einschließen möchten, können Sie die folgende Syntax verwenden:
git cherry-pick A^..B
3. Codekonflikt
3.1 --weiter
git cherry-pick --continue
Nachdem der Benutzer den Codekonflikt gelöst hat, fügen Sie zuerst die geänderte Datei erneut dem temporären Speicherbereich ( git add .
) hinzu und verwenden Sie dann den obigen Befehl, um den cherry-pick
Prozess fortzusetzen.
3.2 --abbruch
git cherry-pick --abort
Brechen Sie nach einem Codekonflikt die Zusammenführung ab und kehren Sie zu dem Zustand vor der Operation zurück.
3.3 --beenden
git cherry-pick --quit
Beenden Sie nach einem Codekonflikt cherry-pick
, aber kehren Sie nicht zu dem Zustand vor der Operation zurück.