提交git删除存储库中的所有文件

7

今天第二次执行git commit -m "don't quit me now"时,我的整个代码仓库都被删除了。事情就是这样:

$ 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 获取)是怎样的? - Noufal Ibrahim
1
很抱歉要问这个问题,但是在这种情况下,文件实际上存在于磁盘上,对吧? - Andrew Marshall
你期望 git checkout 做什么?自此以来,你的工作流程是什么? - CB Bailey
@CharlesBailey 我的语义有问题。尽管即将删除,我还是执行了 git push。如预期一样,我的 Github 仓库变成了空白。我运行了 git checkout 命令以回到之前的提交状态。 - Jack Frost
你有向 git checkout 传递参数吗?否则为什么会回到上一个提交? - CB Bailey
显示剩余4条评论
1个回答

5

由于 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"

1
谢谢,仓库已恢复正常。然而,我不知道它最初是如何进入疯狂状态的,这让我感到不舒服。我是该仓库的唯一用户,只使用基本命令。 - Jack Frost
这个修复的另一件事是它并没有完全按照描述的那样进行。git status 实际上指示了一堆要删除的文件,其中大部分都是未跟踪的。git add . 把它们放回了仓库。有趣的是,我在历史记录中没有看到最后一次提交“new try”。奇怪的事情。 - Jack Frost
这还不起作用。git commit 又清空了我的 repo。现在我有一堆未跟踪的文件夹和文件,似乎不响应 git add . - Jack Frost
这对我没用,同样的问题,我可以使用git add .,但是git status会显示干净的树,所以没有要提交的内容。 - Sergio Solorzano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接