Estou usando Git e comprometi poucos arquivos usando
git commit -a
Mais tarde, descobri que um ficheiro tinha sido adicionado por engano ao compromisso.
Como posso remover um ficheiro do último compromisso?
**ATTENÇÃO***! Se você só quer remover um arquivo do seu commit anterior, e mantémo-lo em disco, leia resposta do juzzlin logo acima.
Se esta é a tua última submissão e queres apagar completamente o ficheiro do teu repositório local e remoto, podes fazê-lo:
git rm <file>
git commit --amend
A bandeira de emenda diz ao git para se comprometer novamente, mas "fundir" (não no sentido de fundir dois ramos) este compromisso com o último compromisso.
Como foi dito nos comentários, utilizar o git rm
aqui é como utilizar o próprio comando rm
!
Se você não tiver pressionado as mudanças no servidor, você pode usar
git reset --soft HEAD~1
Ele irá reinicializar todas as alterações e reverter para um compromisso de volta.
Se você pressionou suas mudanças, então siga os passos como respondido por @CharlesB
A remoção do arquivo usando o rm irá apagá-lo!
Você está sempre adicionando a um commit no git ao invés de remover, então neste caso devolva o arquivo para o estado em que estava antes do primeiro commit (isto pode ser uma ação 'rm' de exclusão se o arquivo for novo) e então re-commit e o arquivo irá embora.
Para devolver o arquivo a algum estado anterior:
git checkout <commit_id> <path_to_file>
ou devolvê-lo ao estado no HEAD remoto:
git checkout origin/master <path_to_file>
então altere o commit e você deve descobrir que o arquivo desapareceu da lista (e não apagado do seu disco!)