git显示,我删除了repo中的所有文件,并在执行git拉取后将其提交。为什么?

git显示,我删除了repo中的所有文件,并在执行git拉取后将其提交。为什么?,git,git-pull,Git,Git Pull,以下是我所做的: $ git pull remote: Counting objects: 446, done. remote: Compressing objects: 100% (372/372), done. remote: Total 383 (delta 280), reused 0 (delta 0) Receiving objects: 100% (383/383), 652.75 KiB | 381 KiB/s, done. Resolving deltas: 100% (280

以下是我所做的:

$ git pull
remote: Counting objects: 446, done.
remote: Compressing objects: 100% (372/372), done.
remote: Total 383 (delta 280), reused 0 (delta 0)
Receiving objects: 100% (383/383), 652.75 KiB | 381 KiB/s, done.
Resolving deltas: 100% (280/280), completed with 43 local objects.
Fast-forward
<list of files and summary of changes>
$git pull
远程:计数对象:446,完成。
远程:压缩对象:100%(372/372),完成。
远程:总计383(增量280),重复使用0(增量0)
接收对象:100%(383/383),652.75千磅| 381千磅/秒,完成。
解析增量:100%(280/280),完成43个局部对象。
快进
现在,当我输入git status时,git显示我删除了repo中的所有文件,并将它们暂存以提交。它还显示所有未跟踪的文件

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   deleted:    ....
#   deleted:    ....
#   deleted:    ....
<a list of all files in the repo>
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
<a list of all top-level files and folders in the repo>
$git状态
#论分行行长
#要提交的更改:
#(使用“git重置磁头…”取消分级)
#
#删除:。。。。
#删除:。。。。
#删除:。。。。
#
#未跟踪的文件:
#(使用“git add…”包含在将提交的内容中)
#
然后当我键入
git add.
git status
时,它显示没有要提交的更改


知道为什么会这样吗

不知道为什么会发生这种情况,但由于这是一种快速的拉动,你可以简单地

git reset --hard origin/master
当我遇到这个问题时(我想是因为一次使用了太多的Git插件:Visual Studio 2013和Git Extensions以及Powershell-Powershell for the win!),为了解除所有内容并使您的WC等于原始版本上的主版本。

),这是因为我将索引文件锁定在.Git文件夹中,所以它现在被称为“index.lock”

Visual Studio 2013通知了我这一点,因此我删除了解决方案根目录中.git文件中的index.lock。然而,这意味着git重新生成了一个索引文件,并显示我已经删除了所有文件!任何一个git插件都显示了与索引告诉他们的情况相同的东西

我不想硬重设git,因为自从通过nuget升级以来,我有很多未提交的更改,这让我很恼火

因此,我恢复了已删除的index.lock文件,删除了新生成的索引文件,并将index.lock重命名为index


然后在VisualStudio中关闭并重新打开解决方案,现在它有了原始索引文件,它不再认为我想删除整个解决方案

显然有什么东西破坏了索引,但我不知道是什么。这是哪种操作系统(即,我可以想象Windows上的问题在Linux上不太可能出现)?“显然有什么东西破坏了索引”-我就是这么想的。但是在
git拉取之前的
git状态
没有显示任何可疑。这是在OSX Lion.Hm上,OSX应该在文件系统上具有POSIX语义,所以索引不可能被锁定。所以我会说要么是断了的钩子,要么是虫子。嗨,埃尔贾布——我想知道你是否解决过这个问题。我在CentOS虚拟机上使用git,这种情况已经发生过几次了。I git push,然后我的下一个git状态显示repo中的每个文件都已删除。您使用的是什么版本的git?我在1.7.1上…这对我很有用,谢谢。在Windows/Mac平台之间切换时,我遇到了类似的问题。