Executando verificação de segurança...
5

Vale lembrar que a partir da versão 2.23.0 do Git (agosto de 2019), foram criados os comandos switch e restore, que servem para substituir algumas funções do git checkout (e também do git reset, entre outros). Embora a documentação diga que ainda são experimentais e podem mudar no futuro, fica aqui como referência.

DESFAZENDO ALTERAÇÃO LOCAL (WORKING DIRECTORY)

Este comando deve ser utilizado quando o arquivo ainda não foi adicionado na staged area.

Em vez de:

git checkout -- meu_arquivo.txt

Podemos usar:

git restore meu_arquivo.txt

DESFAZENDO ALTERAÇÃO LOCAL (STAGING AREA)

Este comando deve ser utilizado quando o arquivo já foi adicionado na staged area.

Em vez de:

git reset HEAD meu_arquivo.txt

Podemos usar:

git restore --staged meu_arquivo.txt

TROCANDO PARA UM BRANCH EXISTENTE

Em vez de:

git checkout bug-123

Podemos usar:

git switch bug-123

Da mesma forma, para voltar ao branch principal, basta fazer git switch main.

CRIAR UM NOVO BRANCH E TROCAR

Em vez de:

git checkout -b bug-456

Podemos usar:

git switch -c bug-456

BAIXAR UM BRANCH REMOTO PARA EDIÇÃO

Em vez de:

git checkout -b bug-123 origin/bug-123

Podemos usar:

git switch -c bug-123 origin/bug-123

Enfim, a ideia básica é que o git checkout fazia muitas coisas (ora trabalhava com branches, ora com arquivos, dependendo dos argumentos que vc usa) e isso acabava tornando-o confuso. Por isso as responsabilidades foram separadas em dois comandos: switch trabalha apenas com branches e restore apenas com arquivos.

Claro que o checkout ainda vai continuar existindo por um bom tempo e é bom saber usá-lo. Mas também é importante saber que os comandos novos existem (há quase 4 anos, e é incrível que a maioria dos tutoriais ainda os ignoram).

Para mais informações:

Inclusive, no último link acima tem uma tabela que resume os principais casos de uso:

AntesDepois
git checkout <branch>git switch <branch>
git checkoutnão tem equivalente direto (use git status)
git checkout -b <new_branch> [<start_point>]git switch -c <new-branch> [<start-point>]
git checkout -B <new_branch> [<start_point>]git switch -C <new-branch> [<start-point>]
git checkout --orphan <new_branch>git switch --orphan <new-branch>
git checkout --orphan <new_branch> <start_point>git switch <start-point> e depois git switch --orphan <new-branch>
git checkout [--detach] <commit>git switch --detach <commit>
git checkout --detach [<branch>]git switch --detach [<branch>]
git checkout [--] <pathspec>…git restore [--] <pathspec>…
git checkout --pathspec-from-file=<file>git restore --pathspec-from-file=<file>
git checkout <tree-ish> [--] <pathspec>…git restore -s <tree> [--] <pathspec>…
git checkout <tree-ish> --pathspec-from-file=<file>git restore -s <tree> --pathspec-from-file=<file>
git checkout -p [<tree-ish>] [--] [<pathspec>…]git restore -p [-s <tree>] [--] [<pathspec>…]
Carregando publicação patrocinada...
1

Existe uma forma de favoritar esse topico? por que para mim que estou começando vai servir muito como um guia.

Muito obrigado por ter feito tao detalhado!.

1
1
1
1
1
1

O switch, como já explicado acima, é bem similar ao checkout.

Eu não achei o switch tão complicado, e na verdade achei até menos confuso, pois ele só lida com branches - diferente do checkout, que pode mexer com branches ou arquivos, dependendo de como vc usa. Com switch, não tem perigo de se confundir e mexer num arquivo sem querer (e se eu quiser mesmo mexer em arquivos, uso o restore).

1

Excelente complemento! Eh otimo sempre estarmos atualizados e praticar as novas funcionalidades. Alguns videos sobre git que vi recentemente ainda usavam do checkout, mas ja vou atualizar minha lista com esses novos comandos.
Obrigado galera!

2

Vale lembrar que a documentação diz que tanto switch quanto restore ainda são experimentais e podem mudar. Por outro lado, já faz quase 4 anos que está assim, e não acho que eles vão deixar de existir. Mas o checkout também vai continuar existindo por um bom tempo.

De qualquer forma, é importante saber ambos, na minha opinião. checkout é mais estável e ainda é o mais usado, tanto que a maioria dos tutoriais por aí ainda ensina somente ele, então precisa saber. Mas acho importante pelo menos saber o básico de switch e restore, pois caso eles se consolidem mais no futuro, vc já saberá usá-los.