Estou tentando excluir os 2 últimos commits de um dos meus repositórios do GitHub. Eu tentei como sugerido aqui : git push -f origin HEAD^^:master
. Parece que funciona, pois os dois últimos commits são removidos.
Em seguida, eu os excluí do meu repositório local com git rebase -i HEAD~2
. Eu removo as linhas relacionadas a essas confirmações e verifico se git log
elas foram removidas corretamente.
Depois disso, faço algumas alterações no meu repositório local, faço um novo commit e envio ao GitHub. O problema é que, na minha conta do GitHub, tenho os dois commits anteriores que tentei excluir.
Eu acho que o problema está no meu repositório local, porque se eu clonar meu repositório Github no meu local e fazer algumas alterações aqui, quando eu envio um novo commit, esses commit antigos não são enviados para o GitHub.
Qualquer ideia?
git reset --hard HEAD^4
ougit reset --hard HEAD~4
. No entanto, as coisas podem ficar um pouco complicadas se o seu histórico contiver mesclagens. Você pode encontrar mais informações sobre como especificar revisões na seção correspondente aqui .git reset --hard HEAD~7
, mas por favor me corrija se eu estiver errado.Se você deseja remover as 2 (duas) últimas confirmações, existe um comando fácil para fazer isso:
Você pode alterar o
2
número de últimas confirmações que deseja remover.E para enviar essa alteração para remoto, você precisa fazer um
git push
com o parâmetro force (-f
):No entanto, não recomendo executar nenhum
git
comando-f
ou--hard
opção envolvida se houver novas confirmações no remoto (Github) após a confirmação que você deseja remover. Nesse caso, sempre usegit revert
.fonte
hard
comando, você perde esses dois commits. Se você deseja salvar as alterações, crie umdiff
arquivo dessas confirmações antes de aplicar a redefinição.git reset HEAD~5
(não usehard
). Dessa forma, você obterá suas alterações em um estado intermediário (ou seja, não confirmado). Para mim, veja esta resposta .O seguinte funciona para mim
Ele remove as últimas
n
confirmações do repositório local, assim comoHEAD^
remove apenas uma. Se você precisar remover essas alterações do controle remoto, poderá ser necessário forçar o envio, pois estará atrás do controle remoto.fonte