git switch
Troca de branch
O comando 'git switch' leva você para outro branch: o HEAD o acompanha e seus arquivos de trabalho mudam para corresponder a esse branch. Com -c, ele cria o branch antes. Foi adicionado no Git 2.23 para assumir a parte do git checkout que troca de branch, com nomes mais claros e padrões mais seguros — ele se recusa a trocar se isso sobrescrever suas edições não commitadas.
Sinopse
git switch [<options>] <branch>
git switch [<options>] (-c|-C) <new-branch> [<start-point>]
git switch [<options>] --detach [<start-point>]
git switch [<options>] --orphan <new-branch>Opções
Escolhendo a opção certa
switch versus checkout
As mesmas ações de branch, antigas e novas
| Comando | Equivalente em git checkout |
|---|---|
git switch main | git checkout main |
git switch -c feature/login | git checkout -b feature/login |
git switch --detach HEAD~1 | git checkout HEAD~1 |
git switch - | git checkout - |
Exemplos
Trocar para um branch
git switch mainIr para main.
Criar e trocar
git switch -c feature/loginCria feature/login e vai para ele.
Branch anterior
git switch -Volta para o branch em que você estava antes.
Rastrear um branch remoto
git switch feature/loginSe só existir origin/feature/login, é criado um branch local que o rastreia.
Exemplos de fluxos de trabalho
git switch mainComeçar de main
git pullPegar o main mais recente
git switch -c feature/loginCriar seu branch
git stashGuardar as edições
git switch mainTrocar
git switch - && git stash popVoltar e restaurar as edições
Solução de problemas
error: Your local changes to the following files would be overwritten by checkout
Causa: Uma edição não commitada conflita com o outro branch
Faça commit ou stash dela antes, ou use --discard-changes para descartá-la
fatal: invalid reference: feature/x
Causa: O branch não existe
Crie-o com git switch -c, ou execute git fetch se ele existir no origin
fatal: a branch is expected, got commit
Causa: Você passou um commit, não um branch
Use git switch --detach <commit>
Dicas e armadilhas
Boas práticas
- ✓Use git switch para branches e git restore para arquivos em vez de git checkout.
- ✓Mantenha o status limpo (commit ou stash) antes de trocar de branch.
- ✓Faça pull de main antes de criar um branch novo a partir dele.
Erros comuns
- ✗Trocar de branch com edições não commitadas e se surpreender quando elas vão junto para o novo branch.
- ✗Usar git switch <commit> — commits precisam de --detach.
- ✗Esquecer -c e receber "invalid reference" para um branch que ainda não existe.
Perguntas frequentes
Para branches faz o mesmo trabalho, mas com opções mais claras e sem poder mexer em arquivos por acidente.
Git 2.23 ou mais recente.
Elas vão com você para o novo branch, a menos que haja conflito — aí a troca é recusada.