2011-03-28 172 views
25

这是一个在流浪汉中的巨大痛苦。我之前有过几次,我不明白为什么。 5分钟前,回购工作良好,我工作的时候,我移动了一些文件(这是很酷的,所有的都很酷),而Git则用它的裤子。任何想法为什么发生这种情况我该如何解决它克隆回购,移动文件等...为什么我会得到“致命的:git status - 瓷器失败”?

回答

35

哦,亲爱的,我是这样的失败。它看起来像这个问题从Flash Builder复制比其他git的回购成子文件夹梗。答案是删除所有不是回购协议的.git文件夹。

+0

我不知道我仍然有一些与旧的子模块相关的.git相关文件 - 在我删除它们之后,我又回到了黑色。 – electblake 2012-10-11 05:11:14

+0

实际上,可能需要从'vendor'文件夹中移除仅有问题的依赖关系的'.git'文件夹。 在目标repo通过一些重新绑定之后,发生了'@ dev'依赖关系。 – hejdav 2015-06-04 07:08:05

1

我的回购中没有任何.git文件夹,但随时将我的新文件复制到我的文件夹中以更新我的应用程序,我仍然收到索引损坏的瓷器失败错误。我不明白如何更新文件会破坏这个或如何解决它。任何人都有进一步的见解呢?

+0

所以你在整个目录结构中只有一个.git文件夹? – 2011-08-24 16:04:13

+0

我想通了。出于某种原因,我在apps/plugins目录中的一个蛋糕插件不断导致此问题中断。我花了3个小时更换每个文件夹,直到找到一个。我认为这只是我在某处找到的蹩脚代码,最近甚至没有使用它。删除该文件夹,一切都很完美。谢谢。 – rncrtr 2011-08-31 17:17:21

+0

是否有可能发生这种情况,即使我自己没有创建任何'cake'插件,全新安装任何'npm'的CoffeeScript模块,特别是'grunt'模块? – trysis 2014-05-25 05:23:17

4

万一它帮助别人,我只是遇到了同样的问题,发现在项目根目录下运行git init修复了它。

3

我遇到了这个错误,因为损坏/未正确初始化的子模块(使用它自己的.git子文件夹)。我暂时删除了子模块文件夹,并在主项目的根目录中使用了git init。解决了我的问题。

+1

这也是我的原因,但除了删除子模块文件夹外,我还必须重新运行'git submodule init && git submodule update'。 – starkos 2017-03-29 12:22:35

2

我有同样的问题。在我的根项目的目录中运行git status产生以下错误:

fatal: This operation must be run in a work tree 
fatal: 'git status --porcelain' failed in submodule js/object-subscribe 

在受影响的子模块(js/object-subscribe)运行git status会产生这样的错误:

fatal: This operation must be run in a work tree 

在该子模块的文件夹中运行git init为我做。

0

通常,蠢货,项目的根目录(git的/)

当你在一个CMS的工作,它可能在安装模块/插件携带的.git /目录中的git对元数据创建了一个隐藏目录具体的模块/插件

如果你不想使用git的子模块的功能,最快的解决办法删除除根git的元数据目录下的所有目录中的.git。 如果这样做,git将不会将这些模块视为项目子模块。

cd /path/to/your/project/code 
find ./ | grep ".git/index" 

位于删除一旦“git的”除了根一个所有目录,但如果你删除它初始化回购再次

3

我知道这是一个古老的线程,但我有同样的问题,最终以不同的方式解决。 git init没有为我工作。 张贴在这里,以防其他人有用。

我的存储库有两个子模块。 垫底之后,我开始收到错误致命: - 陶瓷失败 git的状态。

解决方案是验证每个子模块config文件中的属性worktree - 例如, <repository-checkout>/.git/modules/<submodule-name>/config

我有一个worktree属性的无效路径。它链接到已更改并合并到master的未存在文件夹 - 可能是由于解决冲突时出错。

0

.git是子模块中的文件,并指向位于根目录.git目录中的目录。

在我的情况下,我在docker中挂载了一个git目录,并在那里检查状态。这个子模块的.git文件包含一个在docker中无效的绝对路径。我编辑了这个.git文件到更改gitdir路径为相对路径

Git版本:2.7.4

0

在我的情况下,使用git mv moduleA moduleB用git 2.12.2移动moduleA/mySubmodulemoduleB/mySubmodule后,我跑进follwoing错误:

$ git status 
fatal: Could not chdir to '[../]moduleA/mySubmodule': No such file or directory 
fatal: 'git status --porcelain' failed in submodule mySubmodule 
fatal: 'git status --porcelain' failed in submodule moduleB 

然后我做的follwing(也许在没有这个顺序)

  1. 手动更新.gitmodules进入moduleB
  2. 输入.git/modules和重命名旧模块文件夹
  3. 输入moduleB和删除文件夹的子模块
  4. 运行git submodule syncgit submodule update

在那之后,我可能没有问题再次运行git status

相关问题