Discuss / Git / 求救

求救

Topic source

您好,请问我执行git reset --hard HEAD命令之后本地文件全都没了,还能恢复吗,之前没有add 没有commit过

沉夫子

#2 Created at ... [Delete] [Delete and Lock User]

如果你从来没有add过,那你的文件没有被git管理。然后通过git reset之后,你整个工作区的所有文件都会回到暂存区的那个状态,那些没有add的文件,其实相当于rm -rf了,永远找不回来。

没有add过,也就没有被Git管理,那git reset也不会被Git被删除掉

小小Geek

#4 Created at ... [Delete] [Delete and Lock User]

真惨

小小Geek

#5 Created at ... [Delete] [Delete and Lock User]

二楼正解,应该不会对本地文件产生影响

zangcunlim

#6 Created at ... [Delete] [Delete and Lock User]

据我实验了解,就算add过也找不回来了,因为--hard会把缓存区和工作区都reset掉。

星海码农

#7 Created at ... [Delete] [Delete and Lock User]

add过的可以找回来,add的时候会把文件内容保存为blob对象存入到.git/objects目录下。

git cat-file --batch-check --batch-all-objects | grep blob可以列出所有blob,譬如"ce013625030ba8dba906f756967f9e9ca394464a blob 6"。通过git show ce013625030ba8dba906f756967f9e9ca394464a可以打印其内容。可以通过遍历这些blob找到被reset掉的版本。如果没有git gc过,可以先用ls -l .git/objects根据时间筛选下最可能的blob,以缩小检查范围。

如果你使用的是pycharm,还可以通过pycharm来恢复。在你要恢复的工程名上右键-->local history-->找到你想要恢复的时间点-->revert.


  • 1

Reply