Se você ainda não fez nenhum commit, apenas (1: branch) e (3: checkout) seriam suficientes.
Ou, em um comando:git checkout -b newBranch
Conforme mencionado na git resetpágina do manual :
$ 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)
- Você fez alguns commits, mas percebe que eles eram prematuros para estar no
masterramo " ". Você deseja continuar polindo-os em uma ramificação de tópico, " topic/wip" portanto, crie ramificações fora da atual HEAD.
- Rebobine o
masterramo para se livrar desses três commits.
- Mude para o
topic/wipramo " " e continue trabalhando.
Nota: devido ao efeito "destrutivo" de um git reset --hardcomando (redefine o índice e a árvore de trabalho. Quaisquer alterações nos arquivos rastreados na árvore de trabalho desde que <commit>são descartadas), eu preferiria:
$ git reset --soft HEAD~3 # (2)
Isso garantiria que eu não estivesse perdendo nenhum arquivo privado (não adicionado ao índice).
A --softopção não toca no arquivo de índice nem na árvore de trabalho (mas redefine o cabeçalho para <commit>, assim como todos os modos).
Com o Git 2.23+ , o novo comandogit switch criaria a ramificação em uma linha (com o mesmo tipo reset --hard, portanto, tenha cuidado com seu efeito):
git switch -f -c topic/wip HEAD~3