Método REVERSÍVEL para descartar todas as alterações:
Eu encontrei essa questão depois de fazer uma fusão e esquecer de desenvolver o checkout imediatamente depois. Você adivinhou: comecei a modificar alguns arquivos diretamente no master . D'Oh! Como minha situação dificilmente é única (todos nós já fizemos isso, não fizemos; ->), vou oferecer uma maneira reversível que usei para descartar todas as alterações para obter o master parecendo se desenvolver novamente.
Depois de fazer um git diff
para ver quais arquivos foram modificados e avaliar o escopo do meu erro, executei:
git stash
git stash clear
Depois de armazenar todas as alterações, elas foram limpas em seguida. Todas as alterações feitas nos arquivos com erro no mestre foram eliminadas e a paridade foi restaurada.
Digamos que agora eu queira restaurar essas alterações. Eu posso fazer isso. O primeiro passo é encontrar o hash do stash que acabei de limpar / largar:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
Depois de aprender o hash, restaurei com sucesso as alterações não confirmadas com:
git stash apply hash-of-cleared-stash
Eu realmente não queria restaurar essas alterações, só queria validar se poderia recuperá-las, então as apaguei novamente.
Outra opção é aplicar o stash a um branch diferente , em vez de limpar as alterações. Portanto, em termos de limpar as alterações feitas ao trabalhar no branch errado, stash
você tem bastante flexibilidade para se recuperar de seu problema.
De qualquer forma, se você deseja um meio reversível de limpar as alterações em um branch, o anterior é um modo menos perigoso neste caso de uso.
git reset --hard HEAD^