Ich habe mit der Arbeit an einer neuen Funktion begonnen, und nachdem ich ein wenig programmiert hatte, beschloss ich, dass diese Funktion in einem eigenen Zweig untergebracht werden sollte.
Wie verschiebe ich die bestehenden, noch nicht freigegebenen Änderungen in einen neuen Zweig und setze meinen aktuellen Zweig zurück?
Ich möchte meinen aktuellen Zweig zurücksetzen und gleichzeitig die Arbeit an der neuen Funktion beibehalten.
Verwenden Sie das Folgende:
git checkout -b <new-branch>
Dies lässt Ihren aktuellen Zweig unverändert, erstellt und checkt einen neuen Zweig und behält alle Ihre Änderungen bei. Sie können dann eine Übergabe mit machen:
git add <files>
und eine Übergabe an Ihren neuen Zweig mit:
git commit -m "<Brief description of this commit>"
Die Änderungen im Arbeitsverzeichnis und die Änderungen im Index gehören noch zu keinem Zweig. Dies ändert den Ort, an dem diese Änderungen enden würden.
Sie setzen Ihren ursprünglichen Zweig nicht zurück, er bleibt so wie er ist. Der letzte Commit auf <alten Zweig>
wird immer noch derselbe sein. Deshalb müssen Sie checkout -b
und dann committen.
Alternativ dazu:
Speichern Sie die aktuellen Änderungen in einem temporären Zwischenspeicher:
$ git stash
Erstellen Sie einen neuen Zweig, der auf diesem Stash basiert, und wechseln Sie zu diesem neuen Zweig:
$ git stash branch <neuer-zweig> stash@{0}
Tipp: Verwenden Sie die Tabulatortaste, um das Eintippen des Stash-Namens zu reduzieren.
Wenn Sie es committen, können Sie auch die einzelne Commit-ID herauspicken. Ich mache das oft, wenn ich mit der Arbeit in master beginne und dann einen lokalen Zweig erstellen möchte, bevor ich zu meinem origin/
git cherry-pick <commitID>
Es gibt eine Menge, was man mit cherry-pick machen kann, wie hier beschrieben, aber dies könnte ein Anwendungsfall für Sie sein.