O git pull após o init remove os arquivos não rastreados?

5

Acabei de criar um script simples e criei um novo repositório para ele no GitHub. Depois de inicializar o repositório local, mover o script para o repositório e pull ing o repositório GitHub (contendo apenas um arquivo README.md ), o script foi eliminado. Isso é um comportamento normal? E existe alguma maneira de restaurar o arquivo?

Aqui estão os comandos, conforme executados:

$ mkgithub ~/dev/cr2meta2jpg
Initialized empty Git repository in /home/username/dev/cr2meta2jpg/.git/
$ mv test.sh ~/dev/cr2meta2jpg/cr2meta2jpg.sh
$ cd ~/dev/cr2meta2jpg/
$ ls
cr2meta2jpg.sh
$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From github.com:l0b0/cr2meta2jpg
 * [new branch]      master     -> origin/master
$ ls
README.md
    
por l0b0 06.11.2012 / 10:22

2 respostas

8

Um git pull não substituirá as alterações locais, a menos que você use git add antes. Mesmo neste caso, você ainda pode recuperar seus dados.

Quando você emitiu git add antes do pull:

mkgithub blub
cp test.sh blub/
cd blub/
git add test.sh
git pull

O pull excluirá test.sh . Ele só fará isso se você não tiver nenhum commit no repositório local. Depois de adicionar um commit, isso não removerá test.sh (o git o ignora ou relata um conflito de mesclagem)

O arquivo não está perdido. Ainda está no repositório do Git como uma bolha pendente.

Para recuperar o arquivo:

$ git fsck
Checking object directories: 100% (256/256), done.
Checking objects: 100% (401/401), done.
dangling blob 541060d8292ff808c9715265d063f1bae220da7c
$ git show 541060d8292ff808c9715265d063f1bae220da7 > test.sh

Isso funciona desde que você não emita git gc --prune=now .

    
por 18.12.2012 / 14:24
0

Eu tentei criar um novo repositório com um controle remoto do github:

$ mkgithub ~/dev/cr2meta2jpg
Initialized empty Git repository in /home/username/dev/cr2meta2jpg/.git/

Coloquei um arquivo na pasta sem rastreá-lo:

$ mv test.sh ~/dev/cr2meta2jpg/cr2meta2jpg.sh
$ cd ~/dev/cr2meta2jpg/
$ ls
cr2meta2jpg.sh

E depois tentei puxar do github:

$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From github.com:l0b0/cr2meta2jpg
 * [new branch]      master     -> origin/master
$ ls
README.md

cr2meta2jpg.sh foi excluído, então parece que a resposta é sim.

    
por 28.03.2013 / 08:55

Tags