Восстановить каталог, удаленный с помощью 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