em seguida, adicionei alguns arquivos, como faço para reverter e remover o que está em meus arquivos atuais que ainda não foram adicionados / confirmados?
não, isso não é o que o OP está pedindo - está claro que ele deseja reverter para o último commit, não desfazer o último commit. ele não disse que adicionou alguns arquivos e depois os enviou. tão claramente ele quer o último commit.
Paul,
1
É muito difícil encontrar uma resposta para esta pergunta super comum
Sam
Respostas:
211
Caveat Emptor - Comandos destrutivos à frente.
Mitigação - git reflogpode salvá-lo se precisar.
1) DESFAZER alterações de arquivos locais e MANTER seu último commit
git reset --hard
2) DESFAZER alterações de arquivos locais e REMOVER seu último commit
git reset --hard HEAD^
3) MANTER as alterações do arquivo local e REMOVER seu último commit
Este comando irá deletar seu commit anterior, então use com cuidado! git reset --hard is mais seguro
rudivonstaden
9
WTF está fazendo isso como a resposta correta com 36 votos a favor. Acabei de perder alguns dias de trabalho para isso ... porque li a resposta não o comentário. Esta não é a resposta correta para a pergunta!
Chris Nevill
1
OK, nem tudo está perdido! Você pode fazer git reflog, isso permitirá que você veja os commits que você fez antes do reset. Você pode então verificar esses commits
Chris Nevill
3
Pelo que vale a pena, eu tinha interpretado a pergunta do OP como "como faço para reverter o commit e remover os arquivos atuais", mas era e continua sendo ambígua. Eu teria entendido de forma diferente se o OP tivesse simplesmente dito "como faço para remover os arquivos atuais que não foram adicionados ou confirmados"
Joe Hanink
2
Git é a antítese da declaração de Alan Kays. Coisas simples deveriam ser simples, coisas complexas deveriam ser possíveis. ... especialmente de sua primeira parte. Mesmo assim, obrigado por sua resposta. ajudou.
0xC0000022L
46
Se você deseja remover conteúdos e arquivos recém-adicionados que já foram testados (adicionados ao índice), use:
git reset --hard
Se você deseja remover também o seu último commit (aquele com a mensagem "blá"), é melhor usar:
git reset --hard HEAD^
Para remover os arquivos não rastreados (para que novos arquivos ainda não tenham sido adicionados ao índice) e as pastas, use:
fez isso, mas os arquivos ainda estão lá. (os arquivos não rastreados ainda estão lá)
Blankman
neste caso, você poderia fazer um "git stash"
jacktrade de
3
votado positivamente porque esta é a única resposta clara e inequívoca à pergunta clara e inequívoca do OP.
Paulo
4
Você pode reverter um commit usando git revert HEAD^para reverter para o penúltimo commit. Você também pode especificar o commit para reverter usando o id em vez de HEAD ^
Respostas:
Caveat Emptor - Comandos destrutivos à frente.
Mitigação -
git reflog
pode salvá-lo se precisar.1) DESFAZER alterações de arquivos locais e MANTER seu último commit
2) DESFAZER alterações de arquivos locais e REMOVER seu último commit
3) MANTER as alterações do arquivo local e REMOVER seu último commit
fonte
Se você deseja remover conteúdos e arquivos recém-adicionados que já foram testados (adicionados ao índice), use:
Se você deseja remover também o seu último commit (aquele com a mensagem "blá"), é melhor usar:
Para remover os arquivos não rastreados (para que novos arquivos ainda não tenham sido adicionados ao índice) e as pastas, use:
fonte
git reset --hard
forçará o diretório de trabalho de volta ao último commit e excluirá os arquivos novos / alterados.fonte
Você pode reverter um commit usando
git revert HEAD^
para reverter para o penúltimo commit. Você também pode especificar o commit para reverter usando o id em vez de HEAD ^fonte
Se você deseja apenas descomprimir o último commit, use isto:
funciona como charme para mim.
fonte
Uma maneira fácil e infalível de UNDO alterações de arquivos locais desde o último commit é colocá-los em um novo branch:
Isso deixa as mudanças no novo ramo. Retorne ao branch original para encontrá-lo de volta ao último commit:
O novo branch é um bom lugar para praticar diferentes maneiras de reverter as alterações sem risco de bagunçar o branch original.
fonte