Eu fiz um, git commit
mas ainda não o enviei para o repositório. Então, quando eu faço git status
, recebo '# Seu ramo está à frente de' mestre 'por 1 commit.
Portanto, se eu quiser reverter meu commit principal, posso fazer:
git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
dado que quando git log
recebo:
confirmar eb27bf26dd18c5a34e0e82b929e0d74cfcaab316 Data: Terça, 29 de setembro, 11:21:41 2009 -0700 confirmar db0c078d5286b837532ff5e276dcf91885df2296 Data: Terça, 22 de setembro, 10:31:37 2009 -0700
reset --hard
pode resultar em perda de trabalho, porque isso resulta em git substituindo seus arquivos locais (seu novo trabalho) pelos da web (aconteceu comigo). Perguntas e respostas sobre o git devem declarar explicitamente o que seus comandos estão fazendo e quais são os riscos para os leitores seguintes.Respostas:
Na verdade, quando você usa
git reset
, você deve consultar a cometer que você está redefinindo a ; então você deseja odb0c078
commit, provavelmente.Uma versão mais fácil seria
git reset --hard HEAD^
redefinir o commit anterior antes do cabeçalho atual; Dessa forma, você não precisa copiar os IDs de confirmação.Cuidado ao fazer alguma coisa
git reset --hard
, pois você pode perder as alterações não confirmadas que tiver. Convém verificargit status
se a sua cópia de trabalho está limpa ou se você deseja eliminar as alterações existentes.Além disso, em vez de HEAD, você pode usar
origin/master
como referência, conforme sugerido por @bdonlan nos comentários:git reset --hard origin/master
fonte
git reset --hard origin/master
, para redefini-lo para qualquer que seja a origem.git reset
seu código. Faça o seu próprio futuro a favor: A diferença entrereset
,reset --soft
ereset --hard
(o que acontece com a sua anteriorgit add
aka "o seu trabalho" :) Imagem: ligaçãogit status
não mostrará alterações e o commit será removido / alterações perdidas).git reset --hard HEAD^
pois você perderá alterações nos arquivos confirmados (as alterações serão excluídas). Existem dois ramos a esta pergunta: Para reverter a cometer, mas ainda tem mudanças no disco fazê-logit reset --soft HEAD~1
SE você NÃO enviou as alterações para o controle remoto
Verifique se a cópia de trabalho está limpa
git status
.ELSE você enviou suas alterações para controle remoto
Este comando reverterá / removerá o último commit / change e você poderá pressionar
fonte
para redefini-lo para qualquer que seja a origem.
Isso foi postado por @bdonlan nos comentários . Eu adicionei esta resposta para pessoas que não lêem comentários.
fonte
master
- devo usarorigin/mybranch
então?git reset HEAD~
que apenas devolvem a confirmação ao códigoExistem duas ramificações para esta pergunta (reverter uma confirmação não significa que eu quero perder todas as minhas alterações locais):
1. Para reverter as últimas confirmações e descartar as alterações no arquivo confirmado, faça:
git reset --hard HEAD~1
2. Para reverter a confirmação mais recente, mas manter as alterações locais (em disco), faça:
git reset --soft HEAD~1
Este (o comando posterior) o levará ao estado que você estaria se o fizesse
git add
.Se você quiser desestabilizar os arquivos depois disso, faça
git reset
Agora você pode fazer mais alterações antes de adicionar e confirmar novamente.
fonte
Basta digitar no console:
Este comando descarta todas as confirmações locais antes do HEAD remoto
fonte
Eu acredito que um deles irá atender a sua necessidade
1 - Desfaça a confirmação e mantenha todos os arquivos organizados:
git reset --soft HEAD~;
2 - Desfazer confirmar e desestabilizar todos os arquivos:
git reset HEAD~;
3 - Desfaça a confirmação e remova completamente todas as alterações:
git reset --hard HEAD~;
aqui é onde encontrei a resposta
fonte
Remova a última confirmação antes do envio
git reset --soft HEAD~1
1
significa a última confirmação, se você deseja remover dois últimos usos2
e assim por diante *fonte
--soft
é um ótimo complemento para as respostas possíveis, mas você também pode mencionar o porquê? Explicar sua solução é sempre útil. Tente também ficar com o inglês. Obrigado--soft
- garante que você não perca alterações no arquivo cujo commit você está tentando desfazerEu experimentei a mesma situação que fiz abaixo, muito mais fácil. Ao passar,
commit-Id
você pode acessar o commit específico que deseja ir:Como você deseja remover seu último commit, você precisa passar para
commit-Id
onde você precisa mover o ponteiro:fonte
Isto é o que eu faço:
Primeiro faça o checkout de sua filial (para minha
master
filial do caso ):Em seguida, redefina para HEAD remoto ( ele removerá todas as alterações locais ), force a limpeza e puxe:
fonte
Uma maneira seria excluir a filial local e fazer check-out dessa filial do servidor se a filial local estiver à frente do controle remoto por várias confirmações e você precisar descomprimir todas elas.
fonte
Eu apenas tive o mesmo problema e acabei fazendo:
(N é o número de confirmações que o git mostrará)
Isso solicita ao seu editor de texto e você pode remover a confirmação que deseja, excluindo a linha associada a ele.
fonte