1
resposta

[Dúvida] Git checkout -- ou Git restore ?

Olá, pessoal!

Na aula 5.01 no exemplo do Vinícius ao tentar desfazer as alterações no arquivo index.html o git sugere o comando git checkout -- :

Porém, ao realizar aqui na minha máquina, há a sugestão git restore:

Percebi que ambos, aparentemente, funcionam da mesma forma. Alguém saberia me explicar se há alguma diferença?

Obrigada!

1 resposta

Explicação do nosso instrutor @Jonilson Sousa

Como fala na alternativa correta, com git checkout -- [file] nós desfazemos uma alteração que ainda não foi adicionada ao stage, ou seja, antes do git add.

Já o git restore [file] restaura arquivos da árvore de trabalho ao um ponto especifico, por exemplo, digamos que tenhamos feito algumas mudanças em um arquivo mas vimos que não deveriamos ter feito, então podemos usar o restore para restaurar o arquivo e deixá-lo igual ao último commit.

Já sobre o comando git reset HEAD [file] apenas remove o arquivo do stage ou seja, se alterar algum arquivo e executar o comando git add file esse arquivo já deve entrar no próximo commit, porém se executarmos o git reset HEAD file ele vai apenas apontar o HEAD para o último commit, e então remover o arquivo (file) da área de stage.

Agora o comando git restore --staged [file] também faz o mesmo que o reset, ele apenas vai fazer com que o HEAD aponte para o último commit, ou seja vai remover o arquivo com mudanças da área de stage. O Git tem muito isso, ter comando que fazem várias coisas, assim podemos fazer uma mesma coisa usando comando diferentes, e podendo escolher o que melhor agrada.