Wenn Sie noch keinen Commit gemacht haben, würden nur (1: branch) und (3: checkout) ausreichen.
Oder, mit einem Befehl: git checkout -b newBranch
Mit Git 2.23+ (Q3 2019), die neues Kommando git switch
würde die Verzweigung in einer Zeile erstellen (mit der gleichen Art von reset --hard
also sich vor seiner Wirkung hüten ) :
# First, save your work in progress!
git stash
# Then, one command to create *and* switch to a new branch
git switch -f -c topic/wip HEAD~3
Wie bereits in der git reset
Manpage :
$ git stash # (0) Save your work in progress
$ git branch topic/wip # (1)
$ git reset --hard HEAD~3 # (2) NOTE: use $git reset --soft HEAD~3 (explanation below)
$ git checkout topic/wip # (3)
- Sie haben einige Zusagen gemacht, stellen aber fest, dass sie zu früh waren, um in der "
master
Zweig". Sie wollen sie in einem Themenzweig weiterbearbeiten, also erstellen Sie " topic/wip
"Abzweigung von der aktuellen HEAD
.
- Zurückspulen der
master
Zweig, um diese drei Commits loszuwerden.
- Wechseln zu "
topic/wip
"Zweig und arbeiten Sie weiter.
Nochmals: eine neue Möglichkeit (seit 2019 und Git2.23), all das mit einem einzigen Befehl zu erledigen:
git switch -f -c topic/wip HEAD~3
Hinweis: Aufgrund der "zerstörerischen" Wirkung einer git reset --hard
Befehl (er setzt den Index und den Arbeitsbaum zurück. Alle Änderungen an verfolgten Dateien im Arbeitsbaum seit <commit>
verworfen werden), würde ich mich eher für diese Lösung entscheiden:
$ git reset --soft HEAD~3 # (2)
Dies würde sicherstellen, dass ich keine private Datei verliere (die nicht in den Index aufgenommen wurde).
Die --soft
Option berührt weder die Indexdatei noch den Arbeitsbaum (sondern setzt den Kopf auf <commit>
(wie bei allen Modi).