2009-09-09 10 views
98

Ich begann zu arbeiten, was ich dachte, wäre eine kleinere Bug-Fix auf meinem Master-Zweig. Es ist jedoch außer Kontrolle geraten, bis ich wünschte, ich hätte einen eigenen Zweig geschaffen, um die Entwicklung überhaupt durchzuführen.Nehmen Sie alle meine Änderungen auf dem aktuellen Zweig und verschieben Sie sie in einen neuen Zweig in Git

So jetzt, was ich tun möchte:

  1. eine Niederlassung (sagen wir) „Kante“ genannt erstellen
  2. Verschieben Sie alle geändert/untracked Dateien auf Master Rand (so dass Master ist unverändert aus, wenn ich das Bug-Fix)
  3. beende meine Arbeit auf der Kante, fusioniert zurück in Master

Wie kann ich dies tun begonnen?

Antwort

93

Wenn Sie noch nichts festgelegt haben, sind Sie bereits in der richtigen Position.

  1. Erstellen Sie einen neuen Zweig: git checkout -b edge
  2. Ihre Dateien nicht geändert haben. Nur git add was muss und wie üblich committen.
  3. Wenn Sie fertig sind auf edge committieren, wechseln Sie zurück zu master mit git checkout und git merge edge.
+0

Hatte noch nichts begangen, so dass die erste Zeile ein willkommener Anblick war ... Puh, das ist eigentlich ganz schmerzlos war :-) – Ryan

86

zu JB Antwort hinzuzufügen, wenn Sie bereits begann für ein paar Commits auf Master zu machen, was als eine „Kante“ Anstrengung endete, konnte man:

git stash 
git checkout -b edge master 
git branch -f master SHA1_before_your_commits 
git stash apply 
+0

der Stash-Wrapper nicht unbedingt erforderlich ist, aber gerade für nicht festgeschriebene Arbeitsänderungen richtig? – HaveAGuess

+4

@HaveAGues rechts. Unter "alle meine Änderungen übernehmen" habe ich auch aktuelle Änderungen hinzugefügt, die noch nicht hinzugefügt wurden. Daher das Versteck. – VonC

+1

danke (abgestimmt) – HaveAGuess

13

Wenn Sie versuchen, die Arbeit vom Master in einen Zweig zu verschieben, der bereits existiert, aber hinter dem Master ist, lässt git Sie nicht zum anderen Zweig wechseln. In diesem Fall wie folgt vorgehen:

git stash 
git checkout oldBranch 
git merge master 
git checkout master 
git stash apply 
git checkout oldBranch 
Verwandte Themen