2017-05-29 4 views
1

Ich habe Zweig-Master und Zweig-Dev. Ich habe versehentlich einen Feature-Zweig vom Master gestartet. Bedeutung, ich habe git checkout -b feature-branch während ich auf Master war.Zweig zu einem anderen Zweig als dem Anfangszweig zusammenführen

Jetzt möchte ich den Feature-Zweig auf Zweig-Dev zusammenführen. Wie mache ich es?

+0

'git checkout master && git merge featurebranch' ?? – ckruczek

+0

@ckruczek aber ich möchte in dev –

+0

fusionieren Dann check dev statt master. Was ist los? – ckruczek

Antwort

1

Wenn es nicht zu viele Commits sind, dann "git cherrypick" ist eine Option:

  1. erstellen Neues Thema Zweig von dev Zweig
  2. Verwendung git cherrypick Commits aus dem ursprünglichen Thema Zweig kopieren
  3. ursprünglichen Thema Zweig löschen

EDIT: ich habe ein Beispiel, wie das gleiche zu tun mit „git rebase“ Befehl:

  1. Figur aus dem Hash für das, dass begehen ist die Mutter des Themas Zweig
  2. git --onto topicbranch dev hash_b4_topic rebase

Sie können auch den Zweig verwenden ~ N Syntax anstelle des Commit Hash Wenn Sie keine Angst haben, Commits zu zählen;) Obwohl es nur einen Befehl gibt, würde ich immer noch die erste Option verwenden, weil es ziemlich viel Aufwand erfordert, um es richtig zu machen (d Überprüfen Sie das Handbuch, wählen Sie die richtigen Befehlszeilenargumente). Es wäre also nur sinnvoll, längere Themenzweige zu verschieben.

+0

das ist eigentlich die einfachste Lösung! –

+0

Eine andere nette Option wäre "git rebase", aber das würde wahrscheinlich mehr Zeit und Mühe kosten, um die Befehlszeilenargumente richtig zu machen. – JooMing

+0

nur aus Neugier, wie mache ich das mit Rebase? –

0

zum Zusammenführen der von Ihnen vorgenommenen Änderungen von einem branch zu einem anderen, den Sie verwenden könnten: git merge <branchname>. Lassen Sie mich Ihnen ein Beispiel geben:“

Ich möchte die Änderungen fusionieren i am Zweig gemacht habe dev mit meinem master branch Das erste, was ich tun werde, ist die Änderungen auf dem Zweig begehen dev dann schalte ich werde Zweig. master und ich werde die Änderungen aus dem dev Zweig zusammenführen, indem Sie:

git merge dev 

So Schritt für Schritt. zunächst die Änderungen aus dem Entwicklungszweig verpflichten

git commit -m "<commit message>" 

Schritt zwei: Switc h mit dem Hauptzweig

git checkout master 

Letzter Schritt: fusionieren die Änderungen aus der dev Branche/

git merge dev 

hoffe, das hilft!

0

Sie können 'git log' verwenden, um den Punkt zu finden, bevor Sie mit Ihrer Arbeit begonnen haben, und dann 'git diff' verwenden, um den Unterschied zwischen dem aktuellen HEAD und diesem Punkt zu finden. 'git apply' wird dieses diff anwenden.

  1. Verwenden Sie in Ihrem Feature-Zweig git log, um den Anfang Ihrer Arbeit zu finden. Notieren Sie das Commit vor Ihrer Arbeit.

    git checkout feature-branch 
    git log 
    
  2. Shop die Differenz zwischen dem Punkt, den Sie oben und Ihre Arbeit (die aktuelle Revision HEAD) gefunden. HEAD ist ein implizites Argument.

    git diff (commit_from_step_above) > patch.txt 
    
  3. Wenden Sie Ihre Änderung auf einen korrekten Funktionszweig an.

    git checkout dev 
    git checkout -b proper_feature-branch 
    git apply patch.txt 
    (add, commit, etc) 
    

Wenn andere die gleichen Dateien Sie ändern sich geändert haben, werden Sie einen Merge-Konflikt haben. Dies wird erwartet.

Verwandte Themen