Existe a possibilidade de reverter um arquivo confirmado no Git? Empurrei um commit para o GitHub e então percebi que há um arquivo que eu não queria que fosse enviado (não terminei as alterações).
verifique o estado anterior (inalterado) de seu arquivo; observe o traço duplo
git checkout HEAD^ -- /path/to/file
cometê-lo:
git commit -am "revert changes on this file, not finished with it yet"
empurre, nenhuma força necessária:
git push
volte ao seu trabalho inacabado, faça novamente (3 vezes com a seta para cima):
git checkout HEAD^ -- /path/to/file
efetivamente 'descomprometido':
Para modificar o último commit do repositório HEAD, ofuscando seu trabalho acidentalmente empurrado, enquanto pode entrar em conflito com seu colega que já pode ter feito isso, e que vai crescer cabelos grisalhos e perder muito tempo tentando reconciliar o chefe de seu branch local com o central:
Para remover a alteração do arquivo do último commit:
para reverter o arquivo para o estado anterior ao último commit, faça:
git checkout HEAD^ /path/to/file
para atualizar o último commit com o arquivo revertido, faça:
git commit --amend
para enviar o commit atualizado para o repo, faça:
git push -f
Realmente, considere usar o método preferido mencionado antes.
A menos que você seja o único desenvolvedor em um projeto, você realmente não deve usar git push -f. Isso cria muito mais problemas do que vale a pena. Apenas remova o arquivo e faça um novo commit.
richardm
1
@ user553086 não poderia concordar mais. Melhor agora?
xor
Isso é possível com commits mais antigos na história? Por exemplo, posso fazer isso com git checkout HEAD~2 /path/to/file? Edit: Parece que o que eu queria no meu caso era simplesmentegit rm /path/to/file
starscream_disco_party
1
Você acabou de me salvar 4 horas mano!
Tosin Onikute 01 de
52
Se você deseja remover o arquivo do repo remoto, primeiro remova-o do seu projeto com a opção --cache e, em seguida, envie-o:
(Isso funciona mesmo se o arquivo foi adicionado ao repositório remoto alguns commits atrás) Lembre-se de adicionar ao .gitignore as extensões de arquivo que você não deseja enviar.
Redefina o arquivo em um estado correto, confirme e envie novamente.
Se tiver certeza de que ninguém mais buscou suas alterações ainda, você pode usar --amend ao fazer o commit, para modificar o seu commit anterior (isto é, reescrever o histórico), e então enviar. Acho que você terá que usar a -fopção ao empurrar, para forçar o empurrão, no entanto.
Respostas:
atualização: método mais seguro adicionado
método preferido:
verifique o estado anterior (inalterado) de seu arquivo; observe o traço duplo
cometê-lo:
empurre, nenhuma força necessária:
volte ao seu trabalho inacabado, faça novamente (3 vezes com a seta para cima):
efetivamente 'descomprometido':
Para modificar o último commit do repositório HEAD, ofuscando seu trabalho acidentalmente empurrado, enquanto pode entrar em conflito com seu colega que já pode ter feito isso, e que vai crescer cabelos grisalhos e perder muito tempo tentando reconciliar o chefe de seu branch local com o central:
Para remover a alteração do arquivo do último commit:
para reverter o arquivo para o estado anterior ao último commit, faça:
para atualizar o último commit com o arquivo revertido, faça:
para enviar o commit atualizado para o repo, faça:
Realmente, considere usar o método preferido mencionado antes.
fonte
git checkout HEAD~2 /path/to/file
? Edit: Parece que o que eu queria no meu caso era simplesmentegit rm /path/to/file
Se você deseja remover o arquivo do repo remoto, primeiro remova-o do seu projeto com a opção --cache e, em seguida, envie-o:
(Isso funciona mesmo se o arquivo foi adicionado ao repositório remoto alguns commits atrás) Lembre-se de adicionar ao .gitignore as extensões de arquivo que você não deseja enviar.
fonte
Você pode reverter apenas um arquivo para uma revisão especificada.
Primeiro você pode verificar em quais commits o arquivo foi alterado.
git log path/to/file.txt
Então você pode fazer o checkout do arquivo com o número da revisão.
git checkout 3cdc61015724f9965575ba954c8cd4232c8b42e4 /path/to/file.txt
Depois disso, você pode confirmar e enviar novamente.
fonte
Redefina o arquivo em um estado correto, confirme e envie novamente.
Se tiver certeza de que ninguém mais buscou suas alterações ainda, você pode usar
--amend
ao fazer o commit, para modificar o seu commit anterior (isto é, reescrever o histórico), e então enviar. Acho que você terá que usar a-f
opção ao empurrar, para forçar o empurrão, no entanto.fonte
Obtenha o código hash do último commit.
git log
git revert <hash_code_from_git_log>
git push
confira no GHR. você pode obter o que precisa, espero que seja útil
fonte