1222 Stimmen

Wie kopiert man Commits von einem Branch in einen anderen?

Ich habe zwei Verzweigungen von meinem Master:

  • v2.1 (Version 2), an dem ich seit mehreren Monaten arbeite
  • wss : die ich gestern erstellt habe, um eine bestimmte Funktion zu meinem Master (in Produktion) hinzuzufügen

Gibt es eine Möglichkeit, die gestrigen Übertragungen von wss nach v2.1 zu kopieren?

25voto

Charles Ma Punkte 44109

Sie könnten einen Patch erstellen aus den Commits, die Sie kopieren möchten, und den Patch anwenden zur Zielfiliale.

14voto

Petr Sykora Punkte 157

Oder wenn Sie etwas weniger auf der Seite der Evangelisten stehen, können Sie eine etwas hässliche Methode anwenden, die ich verwende. In deploy_template gibt es Commits, die ich auf meinen Master als Branch Deploy kopieren möchte

git branch deploy deploy_template
git checkout deploy
git rebase master

Dadurch wird ein neuer Zweig deploy (ich verwende -f, um den bestehenden Zweig deploy zu überschreiben) auf deploy_template erstellt, dann wird dieser neue Zweig auf master rebasiert, wobei deploy_template unangetastet bleibt.

5voto

Muhammad Reda Punkte 25423

Hier ist ein anderer Ansatz.

git checkout {SOURCE_BRANCH}               # switch to Source branch.
git checkout {COMMIT_HASH}                 # go back to the desired commit.
git checkout -b {temp_branch}              # create a new temporary branch from {COMMIT_HASH} snapshot.
git checkout {TARGET_BRANCH}               # switch to Target branch.
git merge {temp_branch}                    # merge code to your Target branch.
git branch -d {temp_branch}                # delete the temp branch.

5voto

GorvGoyl Punkte 32029

Es ist sicherer, die eingebaute Git-Gui zu verwenden, um sich bestimmte Commits herauszupicken:

Zum Beispiel: Kopieren Sie eine Übergabe von dev Verzweigung nach main Zweigstelle:

git checkout main
gitk --all

Klicken Sie dann mit der rechten Maustaste auf die gewünschte Übergabe und wählen Sie Cherry-pick this commit

enter image description here

gitk für Mac: gitk auf dem Mac installieren

3voto

Gebb Punkte 6128

Der Befehl cherry-pick kann die Liste der Commits von der Standardeingabe lesen.

Der folgende Befehl wählt die vom Benutzer John verfassten Commits aus, die im "develop"-Zweig, aber nicht im "release"-Zweig existieren, und zwar in chronologischer Reihenfolge.

git log develop --not release --format=%H --reverse --author John | git cherry-pick --stdin

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X