Eu adicionei arquivos ao Git, por engano, usando o comando:
git add myfile.txt
Eu ainda não executei o git commit
. Existe alguma forma de desfazer isto, para que estes ficheiros ganhem'não sejam incluídos no commit?
Você pode desfazer o git add
antes de se comprometer com
git reset <file>
que a removerá do índice atual (a lista "prestes a ser comprometida") sem alterar mais nada.
Você pode usar o
git reset
sem qualquer nome de ficheiro para anular todas as alterações devidas. Isto pode ser útil quando há demasiados ficheiros para serem listados um a um num período de tempo razoável.
Em versões antigas do Git, os comandos acima são equivalentes a git reset HEAD <file>
e git reset HEAD
respectivamente, e falharão se HEAD
estiver indefinido (porque você ainda não fez nenhum commit no seu repositório) ou ambíguo (porque você criou um ramo chamado HEAD
, o que é uma coisa estúpida que você não deveria fazer). Isso foi alterado no Git 1.8.2, no entanto, então nas versões modernas do Git você pode usar os comandos acima mesmo antes de fazer seu primeiro commit:
"git reset" (sem opções ou parâmetros) usado para sair por erro quando você não tem nenhum compromisso em sua história, mas isso agora lhe dá um índice vazio (para igualar um compromisso inexistente você não está nem mesmo em).
Se você digitar:
git status
Git dir-lhe-á o que é encenado, etc., incluindo instruções sobre como se pode desenrolar:
use "git reset HEAD <file>..." to unstage
Acho que o Git faz um bom trabalho em me dar um empurrão para fazer a coisa certa em situações como esta.
Nota: As recentes versões Git (1.8.4.x) alteraram esta mensagem:
(use "git rm --cached <file>..." to unstage)