Eu tenho um repositório Git remoto e preciso reverter os últimos n
commits para o esquecimento.
111
Você pode usar git revert <commit>…
para todos os n commits e, em seguida, enviar como de costume, mantendo o histórico inalterado.
Ou você pode "reverter" com git reset --hard HEAD~n
. Se estiver fazendo push em um repositório público ou compartilhado, você pode divergir e interromper o trabalho de outros com base em seu branch original. O Git impedirá que você faça isso, mas você pode usar git push -f
para forçar a atualização.
git reset --hard [sha1]
onde sha1 é o identificador hash do commit.revert
fará com que seus branches de recursos sejam tratados como "já" mesclados. Isso porque essas ramificações estão realmente sendo mescladas. Mas as mudanças foram revertidas. Solução: selecione ou reverta o commit de reversão .reset --hard
também faz com que os branches do recurso sejam tratados como já mesclados? Minha suposição é que não (onderevert
seria).elmarco está correto ... sua sugestão é a melhor para repositórios compartilhados / públicos (ou, pelo menos agências públicas). Se não foi compartilhado (ou você está disposto a perturbar os outros), você também pode enviar uma referência específica:
Ou, se houver um commit SHA1 específico (digamos 1e4f99e na forma abreviada) para o qual você gostaria de voltar:
fonte
Felizmente, eu estava em posição de usar a solução de Pat Notz, que removeu completamente o commit indesejado. No entanto, inicialmente recebi o erro
Mas adicionar a
-f
opção force ( ) sobrescreve este errofonte
Se você tiver acesso direto ao repo remoto, poderá usar:
Isso funciona porque não há nenhuma tentativa de modificar o diretório de trabalho inexistente. Para obter mais detalhes, consulte a resposta original:
Como posso descomprimir o último commit em um repositório git bare?
fonte
--soft
mesmo seria necessário? Você provavelmente poderia fazer a mesma coisa com simplesmentegit reset
, sem o sinalizador de modo.