为什么我的所有git存储库突然显示所有内容都被删除了?

时间:2014-04-21 00:38:46

标签: git

文件是THERE,git只是告诉我它们已经从存储库中删除了。这可能是一个Github问题吗?

我已经导航到我的项目文件夹,这个文件夹在几天之内我还没有工作过,像往常一样,我跑了:

git status

但是,状态显示我的所有文件都已删除,而不是看到1个或2个文件。然后,在" Untracked Files"中,它显示了我需要添加的应用程序根目录中的所有文件和目录。

我不明白发生了什么,但我非常担心自上次提交以来我所做的任何工作都已消失。

我用git k打开了git注册,在最顶层我看到了:

Local changes checked in to index but not committed.

在我看到的正下方:

master    remotes/origins/master

注意:此项目违反github数据库。

以下是git status命令的输出:

➜  mcp5_mobile git:(master) ✗ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

deleted:    .gitignore
deleted:    .rspec
deleted:    Gemfile
deleted:    README
deleted:    README.md
deleted:    Rakefile
deleted:    app/assets/images/MSDS_icon_rgb.jpg
deleted:    app/assets/images/MSDS_icon_rgb.png
deleted:    app/assets/images/addtocart.gif
<Continues to list every single file in the app. Over 1,100 files.>

Untracked files:
  (use "git add <file>..." to include in what will be committed)

.gitignore
.rspec
Gemfile
README
README.md
Rakefile
app/
autotest/
colorpicker.css
config.ru
config/
db/
deploy/
doc/
eye.js
features/
layout.css
lib/
public/
sample.xml
script/
spec/
termios/
test/
vendor/

3 个答案:

答案 0 :(得分:5)

这强烈暗示您(或您间接调用的内容)已删除或至少已重命名为.git/index 1

$ ls
LICENSE.txt x.txt
$ git status
On branch master
nothing to commit, working directory clean
$ mv .git/index .git/xindex
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    LICENSE.txt
    deleted:    x.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    LICENSE.txt
    x.txt

$ mv .git/xindex .git/index
$ git status
On branch master
nothing to commit, working directory clean

在上面,我通过放回index文件来恢复,但如果它真的消失了,你可以使用HEAD&#39从git reset提交重建它; s --mixed(默认)模式:

$ rm .git/index
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    LICENSE.txt
    deleted:    x.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    LICENSE.txt
    x.txt

$ git reset -- .
$ git status
On branch master
nothing to commit, working directory clean

[旁白:您不需要-- .,因为这些也是默认值。这更强调我们正在重置.提交中HEAD内的每个路径。当然,我通过明确指定HEAD来使用默认 - { - 1}} - 提交操作...]


1 或者,也许您确实将环境变量HEAD设置为某处奇数。当GIT_INDEX 设置时,Git会使用.git/index,因此如果设置了某些内容,则会覆盖默认设置。

答案 1 :(得分:1)

git存储库是完全本地的。因此,它绝对不是github问题。

git status比较了三种不同的东西。您的HEAD提交,索引和工作树。

在你的情况下,似乎文件存在于你的工作树和你的HEAD提交中,但是从索引中删除了。

正常git diff将您的工作树与您的HEAD提交进行比较。 - 如果这个差异看起来很好,你可以简单地git add .将工作树的内容写入索引。或者,您可以使用git reset将HEAD提交的内容写入索引。

如果您一般担心丢失未提交的更改,则应更频繁地提交。未提交的更改通常很糟糕,因为git对它们一无所知,因此在发生奇怪事故时无法帮助恢复它们。

答案 2 :(得分:0)

一定是路径问题。我前几天试图安装一些宝石,并且必须使用PATH,PKG_CONFIG_PATH和C_INCLUDE_PATH做一些有趣的事情,以便编译一些本机库。无论如何,我重新启动了我的Mac,现在一切看起来都很正常。我无法理解它可能是什么,我使用相同的git可执行文件,我刚检查过。是否有一些git在启动时使用的支持库,我可能搞砸了?

一旦弄清楚,我会立即更新答案。如果您知道答案,我会奖励给您。四处欢迎,我很欣赏SO社区的快速反应,这是一个可怕的问题。