2017-07-24 31 views
1

我所做的是:在初始化回购中还原git rm -rf。

$ git init 
$ git add . 
# bunch of unwanted files were also added 
$ vim .gitignore 
$ git rm -rf * 
$ git add . 
# but the files were actually deleted from the ./ folder. 

现在我必须在目录中只的.gitignore病毒码文件。所有必要的文件都没有了。

由于在这个岗位How to revert a "git rm -r ."?

提的是git reset HEAD的路要走?

我不知道我应该运行这个命令,因为我还没有提交任何提交到现在。

+0

'git reset HEAD'说未知版本 –

+0

'git log'看你init初始化SHA然后'git checkout '? – ItayB

+0

'git log' ==>'fatal:您当前的分支'主'还没有任何提交 ' –

回答

2

运行git fsck --lost-found

$ mkdir tt 
$ cd tt 
$ git init 
Initialized empty Git repository in ... 
$ echo I am foo > foo 
$ echo I am bar > bar 
$ git add . 
$ git rm -rf * 
rm 'bar' 
rm 'foo' 
$ git fsck --lost-found 
notice: HEAD points to an unborn branch (master) 
Checking object directories: 100% (256/256), done. 
notice: No default references 
dangling blob 2adbcadb36527b3048a96c5bad232f6c9e762524 
dangling blob bea14010b78ced155c64da9a4c2b1a6b0831335e 
$ ls .git/lost-found/other/ 
2adbcadb36527b3048a96c5bad232f6c9e762524 
bea14010b78ced155c64da9a4c2b1a6b0831335e 
$ cat .git/lost-found/other/2adbcadb36527b3048a96c5bad232f6c9e762524 
I am foo 

该文件的都走了,但他们所有的内容恢复,并对其hash-ID基础的名称。

+0

无需重新开始一周的工作。 :) 有效。我正在浏览.git目录中的文件,但找不到的文件只出现在'git fsck'命令之后。 –

+0

是的 - 在此之前,这些“晃来晃去的blob”位于.git/objects /目录中,并且是压缩的Git-ified形式。 – torek