2012-04-11 96 views
5

今天第二次git commit -m "don't quit me now"删除了我的整个回购。所以它:git commit删除回购中的所有文件

$ git add . 
$ git commit -m "please, be gentle" 

[master 7af0e9c] please, be gentle 
140 files changed, 0 insertions(+), 3186 deletions(-) 
delete mode 100644 .DS_Store 
delete mode 100644 .gitignore 
delete mode 100644 .rspec 
delete mode 100644 Gemfile 
... 

我一直在使用Github的Mac旁边的命令行,并想知道如果这是某种程度上让事情。

$ git checkout 
$ git status 
# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 
# 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# deleted: .DS_Store 
# deleted: .gitignore 
# deleted: .rspec 
# deleted: Gemfile 
# deleted: Gemfile.lock 
+1

在执行'git add .'之前,您的存储库的状态(通过'git status'获得)是什么? – 2012-04-11 05:29:22

+0

是你的环境变量'GIT_DIR'或'GIT_WORK_TREE'集合? – VonC 2012-04-11 05:38:45

+0

以前的这种行为的实例并不是非常丰富:http://stackoverflow.com/questions/6180151/git-commit-without-file-name-and-without-a。如果你克隆你的repo,那么问题是否会持续存在,并尝试在那里进行修改和提交? – VonC 2012-04-11 05:39:49

回答

4

由于git status告诉你一切都会上演删除,在做任何事情之前,指数恢复到HEAD

git reset HEAD 

这样做了以后,git status应该呼应

no changes added to commit (use "git add" and/or "git commit -a") 

然后,再试一次:

git add . 
git commit -m "new try" 
+0

谢谢,回购很正常。然而,我不知道它是如何进入疯狂状态的,因此我感到不舒服。我是回购的唯一用户,只是使用基本命令。 – 2012-04-11 15:45:03

+0

有关此修复程序的其他内容是它没有像描述的那样完成。 'git status'实际上显示了一大堆文件需要删除,而其中大部分文件未被跟踪。 'git add .'把它们放回回购。有趣的是,我没有看到历史上最后一次承诺“新尝试”。奇怪的东西。 – 2012-04-11 15:51:01

+0

这仍然无法正常工作。 'git commit'只是清除了我的repo。现在我有一堆未跟踪的文件夹和文件似乎没有响应'git add .'。 – 2012-04-12 03:35:42