2016-06-15 10 views
1

Ich habe angefangen, an einem Feature-Zweig zu arbeiten und einige Änderungen und Commit vorgenommen. Aber ich habe diese Änderungen nicht auf Remote-Tracking-Zweig übertragen. Aber jetzt möchte ich einen separaten Bugfix Zweig erstellen, so dass ich Pull Request erstellen kann. Wie kann ich einen neuen Zweig mit allen Commit-Verlauf erstellen, die ich auf dem aktuellen Zweig ohne Push gemacht habe.git create Branch mit bestehenden lokalen commits

Ich möchte Commit Graph für mehr Klarheit hinzufügen. A --- B --- C --- D --- E --- G

So habe ich auf dem Zweig Änderungen in der A bereits auf Fern war und lokale Commits BCDEG gemacht. Jetzt möchte ich neuen Zweig starrte von A Commit mit allen lokalen Commit BCDEG, so dass für die Überprüfung kann ich neue Pull-Anforderung auf vorhandenen Feature-Zweig Commit A erstellen.

Antwort

0

Angenommen, Sie bereits auf Ihrem Zweig und wollen neuen Zweig erstellen, aus Funktionszweig beginnen, gerade tun:

git checkout -b <new_branch> 

Danach können Sie schieben Sie es auf dem Ursprung und erstellen Pull-Anforderung wie:

git push origin <new_branch> 

PS wenn ich deine Frage richtig verstanden habe.

1

Da Sie

A` <-- A <-- B <-- C <-- D <-- E <-- G 
^origin/feature      ^HEAD, feature 

zu

  -- B <-- C <-- D <-- E <-- G 
     /       ^HEAD, bug-fix 
A' <-- A 
^  ^feature 
| 
origin/feature 

Zuerst ändern möchten, müssen Sie Ihre Niederlassung

git branch bug-fix

Dies gibt Ihnen das Diagramm

erstellen
A' <-- A <-- B <-- C <-- D <-- E <-- G 
^origin/feature     ^feature, bug-fix, HEAD 

Beachten Sie, dass Sie immer noch auf der feature Zweig sind, müssen Sie nur die Zweig machen, noch nicht Kasse.

Als nächstes müssen Sie die Commits auf feature (B, C, D, E, G) mit reset entfernen (A hier ist der SHA1-Hash des begehen, können Sie auch relativ HEAD Position verwenden können):

git reset --hard A

Hinweis erhalten Sie alle nicht gebundenen Arbeiten an Funktion verlieren - bitte die Gefahren des reset Befehl verstehen, bevor dieser Befehl ausgeführt wird. Alle Reset nicht ist „Push“ der Zeiger von feature dem Fest A.

dann Ihre Niederlassung Kasse und drücken Sie Ihre Funktionszweig Änderungen für eine Pull-Anforderung:

git checkout bug-fix 
git push 

Dies gibt Ihnen die gewünschte Diagramm von:

  -- B <-- C <-- D <-- E <-- G 
     /      ^HEAD, bug-fix 
A' <-- A 
     ^origin/feature, feature 
+1

fabelhafte Antwort +1, aber unvollständig.fügen Sie bitte das letzte Bit hinzu, um die Frage zu beantworten, wo Sie einen neuen 'bugfix'-Zweig von' master' auschecken (beim Commit A). wieder, gute Arbeit, ich war verwirrt von der Frage bis deine Antwort alles für mich in die richtige Perspektive brachte. –

+0

Nachdem ich seine Frage 3 weitere Male gelesen habe, glaube ich, dass Commit 'A' bereits auf einem verfolgten' Feature-Zweig' existiert und er ein paar Bug Fix Local Checkins 'BCDEG' hinzugefügt hat. Er möchte 'BCDEG' in einen lokalen (Zweig-) Zweig verschieben, so dass er eine Pull-Anforderung des' Feature-Branch' bei 'A' ausführen kann. Ich werde meine Antwort aktualisieren, um die Frage direkt zu beantworten, aber die Mechanik ist dieselbe. –

+0

Sie haben wahrscheinlich Recht, die Frage ist verwirrend formuliert zu mir. Auf jeden Fall denke ich, dass deine Antwort die Mechanik klar erklärt. Kudos –