version-control using - Desfazer git pull, como trazer repos para o estado antigo





choose example (9)


Igual à resposta do jkp, mas aqui está o comando completo:

git reset --hard a0d3fe6

onde a0d3fe6 é encontrado fazendo

git reflog

e olhando para o ponto em que você deseja desfazer.

Existe alguma maneira de reverter ou desfazer git pull para que minha fonte / repos chegue ao estado antigo que foi antes de fazer git pull? Eu quero fazer isso porque ele mesclou alguns arquivos que eu não queria fazer, mas apenas mesclar outros arquivos restantes. Então, eu quero recuperar esses arquivos, isso é possível? Obrigado :)

EDIT Eu quero desfazer git merge para esclarecimento. Depois de ver algumas respostas, eu fiz isso

git reflog
bb3139b... [email protected]{0}: pull : Fast forward
01b34fa... [email protected]{1}: clone: from ...name...

Agora, o que devo fazer? Fazendo git reset --hard está OK? Eu não quero estragar de novo, então pedindo passos detalhados?




Essa é a maneira mais fácil de reverter as alterações.

git reset --hard 9573e3e0

Onde 9573e3e0 é seu {Commit id}




git pull faz duas coisas: ele faz uma git fetch e, em seguida, um git merge onde ele mescla as ramificações que foram configuradas para serem mescladas na sua configuração.

Então, o que você quer fazer é desfazer a mesclagem (desfazer a busca não faz muito sentido e não deveria ser necessário).

Para fazer isso, você pode tentar usar git reset --hard para redefinir para um estado anterior. Use o comando git-reflog para encontrar o SHA-1 do estado anterior e, em seguida, redefina-o.

Aviso : git reset --hard remove todas as alterações não confirmadas.




Suponha que $COMMIT foi o último id de confirmação antes de você executar o git pull . O que você precisa para desfazer o último puxão é

git reset --hard $COMMIT

.

Bônus:

Ao falar de puxar, gostaria de compartilhar um truque interessante,

git pull --rebase

Este comando acima é o comando mais útil na minha vida que salvou muito tempo.

Antes de enviar seu novo commit para o servidor, tente este comando e ele sincronizará automaticamente as mudanças mais recentes do servidor (com uma busca + mesclagem) e colocará seu commit no topo no log git. Não precisa se preocupar com pull manual / merge.

Encontre detalhes em: http://gitolite.com/git-pull--rebase




Se houver uma falha de mesclagem, que é o motivo mais comum para querer desfazer um git pull , executar o git reset --merge faz exatamente o que se esperaria: manter os arquivos buscados, mas desfazer a mesclagem que o git pull tentou mesclar. Então pode-se decidir o que fazer sem a confusão que o git merge às vezes gera. E não precisa de um para encontrar o ID de commit exato que --hard mencionado em todas as outras respostas requer.




funciona primeiro uso: git reflog

encontre seu SHA do seu estado anterior e faça (HEAD @ {1} é um exemplo)

git reset --hard [email protected]{1}



você pode fazer git reset --hard ORIG_HEAD

desde "pull" ou "merge", configure ORIG_HEAD para ser o estado atual antes de executar essas ações.




Se você tiver gitk (tente executar "gitk --all na sua linha de comando git"), é simples. Basta executá-lo, selecione o commit que você deseja reverter (clique com o botão direito) e selecione "Redefinir ramificação mestre para aqui". Se você não tiver alterações não confirmadas, escolha a opção "hard".




Para mim só seguindo funcionou:

git clean -ffdx

Em todos os outros casos, eu estava recebendo a mensagem "Ignorando Diretório" para alguns subdiretórios.







git version-control git-merge