Quando a alteração que você quer desfazer estiver no sistema local e não foi enviada por push a um repositório remoto, há duas formas básicas de desfazer a alteração:
Um comando "desfazer", embora não seja uma operação tradicional de desfazer. Em vez de remover o commit, ele descobre como desfazer as alterações no commit e acrescenta um novo commit com o conteúdo inverso. Isso evita que o Git perca o histórico, o que é importante para a integridade do histórico de revisão e para uma colaboração confiável.
Um comando git versátil para desfazer alterações. O comando git reset tem um conjunto poderoso de opções, mas vamos usar apenas os seguintes modos de redefinição para este tutorial:
--soft: Redefine apenas o HEAD do commit que você seleciona. Funciona quase da mesma forma que o git checkout , mas não cria um estado de cabeçalho desvinculado.
--hard: Redefine o HEAD do commit que você seleciona no histórico, desfaz as alterações no índice e desfaz as alterações em seu diretório de trabalho. Neste tutorial a gente não vai testar uma redefinição definitiva.
Para uma descrição completa de como o git reset funciona, consulte git-scm.com Ferramentas do Git - A redefinição desmistificada.