Kontext: Ich arbeite an Master hinzufügen eine einfache Funktion. Nach ein paar Minuten merke ich, dass es nicht so einfach war und es besser gewesen wäre, in eine neue Filiale zu arbeiten.Git: Erstellen Sie eine Zweigstelle von nicht gestützten/nicht festgeschriebenen Änderungen am Master
Das passiert immer mit mir und ich habe keine Ahnung, wie ich zu einem anderen Zweig wechseln und alle diese unbeaufsichtigten Änderungen mit mir den Master-Zweig sauber verlassen. Ich soll git stash && git stash branch new_branch
würde einfach das erreichen, aber das ist, was ich bekommen:
~/test $ git status
# On branch master
nothing to commit (working directory clean)
~/test $ echo "hello!" > testing
~/test $ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testing
#
no changes added to commit (use "git add" and/or "git commit -a")
~/test $ git stash
Saved working directory and index state WIP on master: 4402b8c testing
HEAD is now at 4402b8c testing
~/test $ git status
# On branch master
nothing to commit (working directory clean)
~/test $ git stash branch new_branch
Switched to a new branch 'new_branch'
# On branch new_branch
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testing
#
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/[email protected]{0} (db1b9a3391a82d86c9fdd26dab095ba9b820e35b)
~/test $ git s
# On branch new_branch
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testing
#
no changes added to commit (use "git add" and/or "git commit -a")
~/test $ git checkout master
M testing
Switched to branch 'master'
~/test $ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: testing
#
no changes added to commit (use "git add" and/or "git commit -a")
Wissen Sie, ob es eine Möglichkeit, dies zu erreichen ist?
Obwohl es eine einfachere Lösung für Ihr Problem ist, können Sie in dem, was das Ergebnis, das Sie erhalten, unterscheidet sich von dem, was man wollte angeben könnten? – Gauthier
durch die oben genannten oder die Antworten am unteren Rand, die nicht committed Änderungen sind sowohl auf Master-und der neue Zweig. Ich will sie nur auf dem neuen Zweig, so kann ich Master und arbeiten an einer anderen Sache, ohne diese Änderungen schweben um – knoopx
siehe meine bearbeitete Antwort. Sie müssen Ihre lokalen Änderungen für den neuen Zweig festschreiben, wenn Sie einen sauberen Master auschecken möchten. Lokale Änderungen sind nur die Unterschiede zwischen dem aktuellen HEAD und Ihren Dateien auf der Festplatte. Diese Änderungen an lokalen Dateien sind nicht versioniert, Sie müssen git anweisen, sie irgendwo zu speichern, wenn Sie sie später abrufen möchten. – Gauthier