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 reset
pá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
master
ramo " ". Você deseja continuar polindo-os em uma ramificação de tópico, " topic/wip
" portanto, crie ramificações fora da atual HEAD
.
- Rebobine o
master
ramo para se livrar desses três commits.
- Mude para o
topic/wip
ramo " " e continue trabalhando.
Nota: devido ao efeito "destrutivo" de um git reset --hard
comando (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 --soft
opçã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