Gostaria de saber qual a diferença entre os comandos abaixo quando ainda não estão na stage:
git checkout -- [file]
git restore [file]
e a diferença dos comandos abaixo quando estão na stage:
git reset HEAD [file]
git restore --staged [file]
Gostaria de saber qual a diferença entre os comandos abaixo quando ainda não estão na stage:
git checkout -- [file]
git restore [file]
e a diferença dos comandos abaixo quando estão na stage:
git reset HEAD [file]
git restore --staged [file]
Olá Carlos, tudo bem? 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.
Espero ter esclarecido sua dúvida!
Olá Jonilson, tudo bem e com você?
Sim, acredito que esclareceu minhas dúvidas sim.
Ao assistir os vídeos do curso é mencionado sobre os comandos checkout
e reset
para desfazer o estado na stage e antes dela, assim como é exibido em forma de instrução pelo comando git status
. Contudo, na minha máquina (não sei se é a minha versão de git, 2.25.1) o git status
informa nas instruções o uso com o git restore
.
Ao executar o comando git help restore
apareceu que este comando é experimental e o seu comportamento pode mudar. Por conta disso, é recomendável que eu continue utilizando o checkout
e reset
para desfazer alterações?
Isso mesmo Carlos, o que vem trazendo umas atualizações e novos comandos para distribuir responsabilidades, e por isso você está recebendo essas mensagens!