Восстановить каталог, удаленный с помощью git rm -rf

Я добавил каталог в локальный репозиторий git, используя git add а потом случайно сделал git rm -rf (без совершения ранее). Есть ли способ восстановить файлы из этого каталога?

2 ответа

Решение

Да, ты можешь,

Прочитайте это: Как отменить изменения в Git.


Как только вы добавляете файлы в git, они начинают отслеживаться и хранятся под .git папка.

В них были только добавлены и никогда не переданы они рецензируются как dangling objects, Эти объекты могут быть восстановлены.


Как восстановить висячие предметы?

Сначала мы должны их выяснить

git fsck --full

Как только у вас есть список этих объектов, вам нужно просмотреть их и выяснить, какие из них вам нужны.

# Print out the content of the Object
git cat-file -p <SHA-1>

# If the object is a file you will simply see its content,
# Copy it and save it in a new file.

Вот моя утилита recovery.py, которая создаст файл для каждого хэша:

enter code here


import subprocess
hashes=["01b6a7f272375bc99d98be0068c273b5bc4e9ff6",
"03620d7b53c8a48314c25a3ecdbe369553b01340","PUTYOUR HASHEZ HERE"]
for myhash in hashes:
    print "HASH", myhash
    bashCommand = "git cat-file -p "+ myhash
    process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
    output, error = process.communicate()
    file = open("recover/"+myhash, "w")
    file.write(output)
    file.close()

Это напишет в папку восстановления все файлы, которые вы убили с помощью git

Другие вопросы по тегам