10条GIT线从我的电脑上擦除8Gb - 如何让它们恢复?

时间:2012-10-23 18:34:49

标签: git recovery

我是GIT的初学者,不知道这个程序有多强大......我从几个命令中删除了8 Gb。 我记得我输入了以下几行:

$git config --global user.name "my name"
$git config --global user.email "my email"
$git add *.c
$git commit -m
$git status

然后我看到很多文件被跟踪和未跟踪,我试图删除它们(从git)。我不知道我会从我的电脑上删除它们。所以我做了以下事情:

$git rm
$git rm --cached *.c

这样我删除了所有跟踪的文件。所以我继续说道:

$git clean -f
$git clean -f -d
$git clean -f -x
$git clean -d -x -n

这样我删除了一些未跟踪的文件,系统没有使用的文件(我使用的是Windows)。现在这就是我所拥有的:

$git status
On branch master
Initial commit
Untracked files:
 (use "git add <file>..." to include in what will be commited)
 .gitconfig
 AppData/
 Desktop/
 Favourites/
 NTUSER.DAT
 NTUSER.DAT{some characters and numbers}
 ntuser.dat.LOG1
 ntuser.dat.LOG

$git checkout
fatal: You are on a branch yet to be born

也许我使用了更多命令,但我不记得了! 我只是想恢复我的旧文件,我将停止使用这个可爱的Git软件。

1 个答案:

答案 0 :(得分:74)

哦,小伙子。我看到你做了什么,而且它不漂亮。让我们阅读“git clean”的文档:

  

git-clean - 从工作树中删除未跟踪的文件

这意味着git-clean 删除了无法恢复的文件。 Git已经采取了一些安全措施,因此您不会意外地运行{{1 - 除非您指定git clean,否则不会删除目录,除非您通过-d,否则不会删除被忽略的文件,除非您指定-x,否则不会执行任何操作

看起来您将主目录转换为Git存储库,提交了-f个文件,然后删除了其他所有文件。

这基本上就像在Windows中运行*.crm -rf *一样。 不要这样做。

解决方案

从备份恢复。

如果你没有备份,那么这是为什么我们有备份的一个痛苦的对象课程,你必须尝试恢复已删除的文件 - 你必须关闭您的计算机在完成之前不会启动到Windows。

关于“未跟踪文件”的注释

“未跟踪文件”是不属于Git存储库的文件。我可以看到,如果您认为未跟踪的文件是您的Git仓库的一部分,您将尝试越来越危险的东西,直到它们被删除。未跟踪的文件从未成为您Git仓库的一部分,因此您无需从Git仓库中删除它们。

关于del /s *.*

的说明

-f / -f选项意味着“此命令将删除数据,我知道我在做什么。”在任何命令提示符下键入--force之前,您应该反思一下,考虑此命令将删除哪些数据,并确保您确实要删除它。

例如,-fgit rm作为参数。 -f命令将拒绝删除具有未提交更改的文件,因为这将破坏更改。使用git rm会覆盖此行为,允许您使用-f销毁数据。