Frage Verschieben Sie vorhandene, nicht festgeschriebene Arbeit in einen neuen Zweig in Git


Ich begann mit der Arbeit an einer neuen Funktion und nachdem ich ein wenig programmiert hatte, entschied ich, dass diese Funktion in einem eigenen Zweig sein sollte.

Wie verschiebe ich die bestehenden nicht festgeschriebenen Änderungen in einen neuen Zweig und setze meinen aktuellen zurück?

Ich möchte meinen aktuellen Zweig zurücksetzen und gleichzeitig vorhandene Arbeiten an der neuen Funktion beibehalten.


2506
2017-09-08 15:57


Ursprung


Antworten:


Verwenden Sie Folgendes:

git checkout -b <new-branch>

Dadurch wird Ihr aktueller Zweig unverändert belassen, ein neuer Zweig erstellt und ausgecheckt und alle Änderungen beibehalten. Sie können dann ein Commit mit folgendem Befehl durchführen:

git add <files>

und begib dich in deine neue Niederlassung mit:

git commit -m "<Brief description of this commit>"

Die Änderungen im Arbeitsverzeichnis und Änderungen im Index gehören noch keinem Zweig an. Dies ändert sich, wo diese Änderungen enden würden.

Du nicht zurücksetzen Ihr ursprünglicher Zweig bleibt so wie er ist. Das letzte Commit an <old-branch> wird immer noch gleich sein. Deshalb du checkout -b und dann begehen.


2961
2017-09-08 15:59



Alternative:

  1. Speichert die aktuellen Änderungen in einem temporären Speicher:

    $ git stash

  2. Erstellen Sie einen neuen Zweig basierend auf diesem Stash, und wechseln Sie zum neuen Zweig:

    $ git stash branch <new-branch> stash@{0}

Tipp: Verwenden Sie die Tabulatortaste, um die Eingabe des Stash-Namens zu reduzieren.


253
2018-06-19 00:18



Wenn Sie Commits gemacht haben auf Ihrem Hauptzweig, während Sie codiert haben, aber Sie möchten diese Commits jetzt in einen anderen Zweig verschieben:

  1. Kopieren Sie Ihren aktuellen Verlauf in einen neuen Zweig und bringen Sie auch nicht festgeschriebene Änderungen mit:

    git checkout -b <new-feature-branch>
    
  2. Erzwinge jetzt den ursprünglichen "unordentlichen" Zweig: (ohne darauf zu wechseln)

    git branch -f <previous-branch> <earlier-commit-id>
    

    Beispielsweise:

    git branch -f master origin/master
    

    oder wenn du 4 Commits gemacht hast:

    git branch -f master HEAD~4
    

Warnung: Anscheinend git branch -f master origin/master werden Setzen Sie die Tracking-Informationen zurück für diesen Zweig. Also, wenn Sie Ihre konfiguriert haben master Verzweigung, um zu etwas anderem als zu drücken origin/master dann wird diese Konfiguration verloren gehen.

Eine Alternative ist zu verwenden Diese Reset-Technik. Aber diese Anweisungen werden alle nicht festgeschriebenen Änderungen verwerfen, die Sie haben. Wenn du diese behalten willst, verstaue sie zuerst und stoppe sie am Ende.


35
2018-02-12 07:44



Wenn Sie es festschreiben, können Sie auch die Single-Commit-ID auswählen. Ich mache das oft, wenn ich mit der Arbeit im Master anfange und dann einen lokalen Zweig erstellen möchte, bevor ich zu meinem Ursprung dränge.

git cherry-pick <commitID>

Es gibt viele Möglichkeiten, die Sie mit der Auswahl von Kirschen, wie beschrieben, machen können Hier, aber das könnte ein Anwendungsfall für dich sein.


15
2017-11-30 20:58