Git: parecia estar em “(sem ramificação)” e depois perdi minhas alterações

11

Eu estava tentando passar do meu espaço de trabalho do Git para o Github, mas minhas alterações adicionadas e confirmadas não foram carregadas.

Então, fazendo um "git branch" eu consegui algo parecido com isto:

git branch
* (no branch)
  master

Loucamente, achei que poderia voltar ao mestrado com

git checkout master

e agora minhas mudanças parecem ter desaparecido. Meu ramo mestre tem cerca de um dia de vida. E parece que não há como voltar a isso (nenhum ramo).

As minhas alterações estão perdidas? Ou existe uma maneira de recuperá-los?

    
por interstar 20.08.2009 / 18:34

3 respostas

12

Contanto que você não tenha feito git gc , não perdeu nada. Tudo que você precisa fazer é encontrá-lo novamente :) O que você ganha com:

git reflog show

Isso deve mostrar o que aconteceu e o id do (s) nó (s) ausente (s).

    
por 20.08.2009 / 19:23
5

A resposta acima está correta. Foi o que eu fiz:

$ git reflog
5b35f6d HEAD@{1}: pull github master: Fast forward
ca92d15 HEAD@{2}: checkout: moving from 759dab1b15731ce7680c26839ca470d20e709e36 to master
759dab1 HEAD@{3}: commit (merge): Merge branch 'master' of github.com:gonzojive/IODB-ui into HEAD
065e269 HEAD@{4}: commit: added fieldsets to snazzy form
f357606 HEAD@{5}: commit: preliminary support for google maps.
ca92d15 HEAD@{6}: checkout: moving from master to ca92d15d272867b63d54f96d4aa57f8ecc479cd0

$ git checkout ca92d15d272867b63d54f96d4aa57f8ecc479cd0

O "Oh não!" momento é este:

checkout: moving from master to ca92d15d272867b63d54f96d4aa57f8ecc479cd0

ca92d15d272867b63d54f96d4aa57f8ecc479cd0 é a ramificação anônima que aparece como (nenhuma ramificação). Para voltar a isso, basta fazer um checkout git e seu antigo pseudobranch é restaurado.

Eu recomendo fazer backup do seu repositório git antes de você acessá-lo acidentalmente, apenas para ficar tranquilo.

    
por 26.01.2010 / 02:55
2
# if you have already checked out to master, 
# you won't know the commit-ish of your "no branch":

git fsck --lost-found # (to find your <commit-ish>)
git merge <commit-ish>

# if you are still on your "no branch" commit:

git log # (the commit-ish will be on the first line)
git checkout master
git merge <commit-ish>

# or

git log | head -n 1 | cut -d ' ' -f 2 | pbcopy
git checkout master
git merge <commit-ish>
    
por 16.06.2011 / 20:32

Tags