使用git rm-rf删除的恢复目录

使用git rm-rf删除的恢复目录,git,Git,我使用git add向本地git repo添加了一个目录,然后意外地执行了git rm-rf(以前没有提交)。是否有某种方法可以从该目录中恢复文件?是的,您可以 请阅读以下内容: 将文件添加到git后,将开始跟踪这些文件,并将其存储在.git文件夹下 在游戏中,他们只是被添加而从未提交,他们被裁判为悬挂的物体。这些物体是可以恢复的 如何恢复悬挂的对象? 首先我们必须找到他们 git fsck --full 一旦你有了这些对象的列表,你就需要查看它们并找出你需要的对象 # Print ou

我使用
git add
向本地git repo添加了一个目录,然后意外地执行了
git rm-rf
(以前没有提交)。是否有某种方法可以从该目录中恢复文件?

是的,您可以

请阅读以下内容:


将文件添加到git后,将开始跟踪这些文件,并将其存储在
.git
文件夹下

在游戏中,他们只是被添加而从未提交,他们被裁判为悬挂的物体。这些物体是可以恢复的


如何恢复悬挂的对象? 首先我们必须找到他们

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.
#打印出对象的内容
git cat文件-p
#如果对象是一个文件,您只需查看其内容,
#复制并保存到新文件中。


这是我的recover.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杀死的所有文件

在下面给您写了一个完整的答案。如果您删除了整个目录(包括.git目录),您似乎需要使用一些数据恢复软件-在尝试恢复数据之前,尽量不要在黄昏时放置新文件(尤其是在此目录中)。很高兴能帮上忙,请阅读随附的关于头部的帖子,它会教你我假设的新东西。拯救了我的一天!谁想要下一步的康复?