Respostas:
git reset --hard HEAD~1
git push -f <remote> <branch>
(Exemplo empurrar: git push -f origin bugfix/bug123
)
Isso desfará a última confirmação e enviará o histórico atualizado para o controle remoto. Você precisa passar -f
porque está substituindo o histórico upstream no controle remoto.
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:
git revert 364705c
em seguida, envie-o para o controle remoto, como de costume:
git push
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.
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:
git log
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:
git reset --hard your_that_copied_string_but_without_quote_mark
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:
git push -f
você deveria ver como
"aviso: push.default está desativado; seu valor implícito foi alterado em ..... ... Total 0 (delta 0), reutilizado 0 (delta 0) ... ... your_branch_name -> master (atualização forçada) . "
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 .
Você pode fazer uma nova análise interativa:
git rebase -i <commit>
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
Tente usar
git reset --hard <commit id>
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
git push -f <remote> <branch>
git reset --hard <the-sha-you-want-to-return-to>
.