Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在错误的git重置后恢复文件--硬命令_Git_Recovery - Fatal编程技术网

在错误的git重置后恢复文件--硬命令

在错误的git重置后恢复文件--硬命令,git,recovery,Git,Recovery,这将需要一位专家: 我运行了一个git init和git add--all和一个新项目,在我意识到我没有设置git repot之前,我工作了太久。在运行git add之后,我意识到我忘了创建一个.gitignore文件。没有想到我运行了git reset--hard HEAD(硬头),哦,不,我的所有文件都消失了,没有日志或reflog,没有状态,所有命令都会导致致命:错误的默认版本'HEAD'。我相信答案是我完蛋了。似乎无法处理任何悬垂的斑点等。希望某位大师知道一些我不知道的事情 git fs

这将需要一位专家:

我运行了一个
git init
git add--all
和一个新项目,在我意识到我没有设置git repot之前,我工作了太久。在运行git add之后,我意识到我忘了创建一个.gitignore文件。没有想到我运行了git reset--hard HEAD(硬头),哦,不,我的所有文件都消失了,没有日志或reflog,没有状态,所有命令都会导致
致命:错误的默认版本'HEAD'
。我相信答案是我完蛋了。似乎无法处理任何悬垂的斑点等。希望某位大师知道一些我不知道的事情

git fsck --full git:master
notice: HEAD points to an unborn branch (master)
Checking object directories: 100% (256/256), done.
notice: No default references
dangling blob c57eff55ebc0c54973903af5f72bac72762cf4f4
dangling blob 4740a6ee5099aa087bac317337e28bba78c4b83c
missing tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
dangling blob 0d6b3be3e5517a7a7df7df941a6bd3740fcfc5e1
dangling blob d0437745b1902b1ec7e4154a6c058a900575ae7b
dangling blob 5223f05f29bed36037a68f1185f0d718f2a5f9b8
dangling blob d3f186be7e3fcac86aa15c6ebf416f636269f356
dangling blob 526b432e210b3a943df9a7146a0fb4c3e30fc2f5
dangling blob 96722f502f9bd93e5205ea07d8c9b56b11f2e9bd
dangling blob 594eff1d8bfd71561f4f9a0b1447c764e812e2aa
dangling blob df1b87ad781e0a961648f2c01d37b9fe15e581bd
dangling blob e196d0eaf4df52ec1d65faf1971e444d37640284
dangling blob a112aeec073daabfa02ba34b97f14a2bed7ff831
dangling blob e449375c07fc16d823fda51632ed0ed9894ff0f7
dangling blob 67d6eb75cb856092664d32c6eb9c10e1e226d61a
dangling blob abecf6b29f407556dc135523dd68d889d1e5147e
dangling blob af384fede44e1cf5dd963988a6aedf3161089891
dangling blob 2f21e52fb10e12a249ee3c99cf386fcf4a3bb08c
dangling blob f12933a0ea1ff0f052eef393485d59e5400f4d40
dangling blob 72f3fb0e59445ddf270882b4d323daee85d7fe2b
dangling blob f5bffa99c3301776fe0634ac7982c15320c46207
dangling blob fd764a7e888b3e090bdff5604576de1ab28e0ef8

您仍然可以恢复内容

为了安全起见,首先,请执行以下操作:

git fsck --lost-found
这将把blob保存到
.git/lost-found/other

使用
git fsck
的输出,您现在可以执行如下命令

git show c57eff55ebc0c54973903af5f72bac72762cf4f4 > filename
恢复文件。这很容易恢复内容,但不会恢复文件名

您可以使用以下简单命令对所有blob执行此操作:

for blob in $(git fsck --lost-found | awk '$2 == "blob" { print $3 }'); do git cat-file -p $blob > $blob.txt; done

这里有更多详细信息-

上面的第一个命令就是键。只要运行一次
git fsck--lost-found
,您就可以
cd.git/lost-found/other
仔细阅读那里的文件。没有的是文件的名称,但是如果你能通过检查内容找出哪个文件是哪个,你就没事了。这就是答案。不过,我应该更清楚:我只是想恢复我的文件结构,等等,而不是将这些blob转储回txt。我是手工做的……小心地……呃。@Kevin-在这种情况下,没有办法恢复文件结构。树/文件结构是提交,但从未完成。有趣的是,您得到了一个
缺失的树4B825DC642CB6EB9A060E54BF8D6928FBEE4904
:这是空树的哈希ID(请参阅)。是的……奇怪。我只是将blob转储到.txt文件中,然后手动重新创建我的文件结构,幸运的是,考虑到内容量很小,这很容易。