Como voltar ao último commit do histórico depois de usar o git reset para ir para um conjunto de alterações mais antigo?

StackOverflow https://stackoverflow.com/questions/2540505

  •  23-09-2019
  •  | 
  •  

Pergunta

Suponha que minha história seja assim:

A - B - C - D (mestre)

Se eu fizer git reset B, eu vou ter:

A - B (mestre)

O problema é, git log agora mostre-me apenas a história de A a B, e não consigo mais ver C e D.

Como posso voltar para D?

Foi útil?

Solução

Você deve poder ver D com git reflog.

Veja isso artigo, por exemplo.

A única vez que os compromissos são realmente excluídos é se você git gc --prune (então tenha cuidado com isso!).

Se você executar o Git Reflogue agora em um repositório em que trabalha, verá muitas mudanças que se parecem mais assim:

c5c3a82... HEAD@{0}: pull origin featureB: Merge made by recursive.
49d0608... HEAD@{1}: reset --hard HEAD^: updating HEAD
3ed01b1... HEAD@{2}: pull origin featureA: Merge made by recursive.
49d0608... HEAD@{3}: pull origin bugfixJ: Merge made by recursive.
854d44e... HEAD@{4}: commit: Add more cowbell to foo.c
6dbc22d... HEAD@{5}: pull origin bugfixI: Merge made by recursive.
9bdb763... HEAD@{6}: commit: Remove weevils
8518f9d... HEAD@{7}: checkout: moving from wickedfeature to master

Essas linhas podem ser divididas em 4 partes:

  • cometer hash,
  • cometer ponteiro,
  • ação,
  • e informações extras.

Se quiséssemos recuperar o compromisso que foi perdido em HEAD@{1}, nós poderíamos apenas git reset --hard HEAD@{2}.
Agora, nossa filial atual (e cópia de trabalho) está definida como o estado do repositório antes de fazer a redefinição.

Se quiséssemos apenas ver o que era esse estado, poderíamos git checkout -b temp HEAD@{2} (ou git checkout HEAD@{2} Se você tem o Git 1.5.0 ou mais).

Outras dicas

Ok, encontrei.

Você pode usar git reflog.

Eu não sabia para que servia, mas agora posso ver que é um registro de todas as referências que HEAD tem apontado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top