Eu executei git commit
seguido de a git push
. Como posso reverter essa alteração nos repositórios local e remoto?
$ git log
commit 364705c23011b0fc6a7ca2d80c86cef4a7c4db7ac8
Author: Michael Silver <Michael [email protected]>
Date: Tue Jun 11 12:24:23 2011 -0700
git
git-push
git-commit
Michael
fonte
fonte
git reset --hard <the-sha-you-want-to-return-to>
.git log --decorate --oneline
para descobrir para onde seu HEAD aponta.git reset HEAD~1
se você não deseja que suas alterações ocorram (alterações sem estágio). Mudança, cometer e empurrar novamentegit push -f [origin] [branch]
Geralmente, faça um commit "inverso", usando:
em seguida, envie-o para o controle remoto, como de costume:
Isso não excluirá o commit: ele cria um commit adicional que desfaz o que o primeiro commit fez. Qualquer outra coisa, não é realmente segura, especialmente quando as alterações já foram propagadas.
fonte
git reset
será aceito apenas se você ainda não tiver enviado as alterações ao servidor.Primeiro de tudo, relaxe.
"Nada está sob nosso controle. Nosso controle é mera ilusão.", "Errar é humano"
Eu entendo que você acidentalmente empurrou seu código para
remote-master
. Isso vai ficar bem.1. Primeiro, obtenha o
SHA-1
valor do commit que você está tentando retornar, por exemplo, commit no branch master. Rode isto:você verá várias seqüências de caracteres como 'f650a9e398ad9ca606b25513bd4af9fe ...' juntamente com cada um dos commits. copie esse número do commit que você deseja retornar .
2. Agora, digite o comando abaixo:
você verá a mensagem "HEAD is now at". você está claro. O que acabou de fazer é refletir essa mudança localmente.
3. Agora, digite o comando abaixo:
você deveria ver como
Agora, você está claro. Verifique o mestre com "git log" novamente, seu Fixed_destination_commit deve estar no topo da lista.
Você é bem-vindo (com antecedência;))
ATUALIZAR:
Agora, as alterações que você fez antes de tudo começar agora se foram. Se você quiser devolver esses trabalhos, é possível. Graças aos comandos git reflog e git cherry-pick .
Para isso, sugiro que você siga este blog ou este post .
fonte
git reset HEAD~1
se você não quiser que suas alterações ocorram (alterações sem estágio). Alterar, confirmar e pressionar novamentegit push -f [origin] [branch]
fonte
Você pode fazer uma nova análise interativa:
Isso exibirá seu editor padrão. Apenas exclua a linha que contém o commit que você deseja remover para excluir esse commit.
Obviamente, você também precisará acessar o repositório remoto para aplicar essa alteração.
Veja esta pergunta: Git: removendo confirmações selecionadas do repositório
fonte
Tente usar
Observação: aqui o commit id será o id do commit que você deseja acessar, mas não o id que deseja redefinir. este foi o único ponto em que eu também fui preso.
então empurre
fonte
Alternativamente:
Forçar a ramificação principal do repositório remoto de origem para o pai da última confirmação
fonte