2 votes

Récupérer un fichier après un pull git

L'extraction sans commits locaux supprime les fichiers mis à disposition sans avertissement. Comment peut-on récupérer ces fichiers ?

Voici un exemple qui illustre le problème :

~/git $ git --version 
git version 1.7.5.4

~/git $ uname -a
Darwin Joe-MacMini.local 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun  7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386

~/git $ mkdir TESTDIR
~/git $ cd TESTDIR/

~/git/TESTDIR $ echo "hi" > file.txt

~/git/TESTDIR $ git init
Initialized empty Git repository in /Users/joe/workspace/git/TESTDIR/.git/

~/git/TESTDIR (master #%) $ git add file.txt

~/git/TESTDIR (master #) $ git status 
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   file.txt
#

~/git/TESTDIR (master #) $ ls -al
total 8
drwxr-xr-x   4 joe  staff  136 Jun 19 14:52 .
drwxr-xr-x  19 joe  staff  646 Jun 19 14:52 ..
drwxr-xr-x  11 joe  staff  374 Jun 19 14:52 .git
-rw-r--r--   1 joe  staff    3 Jun 19 14:51 file.txt

~/git/TESTDIR (master #) $ git remote add origin git@github.com:joecabezas/GitLogGroupByDate.git

~/git/TESTDIR (master #) $ git reflog
fatal: bad default revision 'HEAD'

~/git/TESTDIR (master #) $ git pull origin master
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:joecabezas/GitLogGroupByDate
 * branch            master     -> FETCH_HEAD

~/git/TESTDIR (master) $ ls -al
total 8
drwxr-xr-x   4 joe  staff  136 Jun 19 14:53 .
drwxr-xr-x  19 joe  staff  646 Jun 19 14:52 ..
drwxr-xr-x  13 joe  staff  442 Jun 19 14:53 .git
-rw-r--r--   1 joe  staff  148 Jun 19 14:53 README.md

~/git/TESTDIR (master) $ git reflog
8583332 HEAD@{0}: initial pull

1voto

Charles Bailey Points 244082

Vous pouvez récupérer le contenu des fichiers perdus avec git fsck --lost-found .

Ce numéro a été signalé mais je ne crois pas que le patch ait été appliqué. La publication d'un suivi sur la liste de diffusion git pourrait aider.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X