Git восстановить удаленные файлы перед любой фиксацией - PullRequest
0 голосов
/ 12 марта 2020

Я только что запустил новый репозиторий, в котором уже было несколько файлов, затем я сделал git add ., но после этого я сделал git rm -r -f ./, и он удалил все файлы. Есть ли способ вернуть их? Я не делал никаких коммитов до этого.

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Вы можете иметь возможность извлечь содержимое удаленных файлов с помощью git fsck и git show. Смотрите следующий пример - мы создаем новый репозиторий, создаем новый файл, добавляем его в индекс, затем запускаем git rm:

$ git init
Initialized empty Git repository in /home/ja/so/git-rm/.git/
$ echo hello > FILE
$ git add FILE
$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   FILE

$ git rm -r -f ./
rm 'FILE'
$ git status
On branch master

Initial commit

nothing to commit (create/copy files and use "git add" to track)

Наш FILE теперь потерян:

$ ls -Al
total 4
drwxr-xr-x 7 ja users 4096 Mar 12 16:17 .git

Давайте попробуем извлечь его содержимое с помощью git fsck и git show:

$ git fsck
notice: HEAD points to an unborn branch (master)
Checking object directories: 100% (256/256), done.
notice: No default references
dangling blob ce013625030ba8dba906f756967f9e9ca394464a
$ git show ce013625030ba8dba906f756967f9e9ca394464a
hello
0 голосов
/ 12 марта 2020

Нет способа отменить команду "rm -r -f". Никогда не используйте команду rm -f, если вы не фиксируете изменения. без опции -f git rm проверять незафиксированные файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...