2011-06-07 65 views
7

我有一个git回购我一直在使用去年在同一个盒子。今天我跑git status并且得到错误信息:Git回购错误消息,它不是一个回购...但它是

fatal: Not a git repository (or any parent up to mount parent /home) 
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set). 

我有一个.git目录和它填充了次提交我为回购。我不想重新初始化回购,因为它担心它会覆盖历史。我也不想真的想从github中重新获得它,因为我在一段时间内在分支中存储了一些变化,而这些变化在一段时间里还没有推到GH上。

编辑:

我有理由相信这不是我的环境。其他git回购工作正常工作

+1

如何做一个'git克隆'进入临时目录并手动合并隐藏的更改? – 2011-06-07 17:52:25

+0

如果你'cd .git'并做'git log',它会说什么? – karmakaze 2011-06-07 17:59:50

+0

@karmakaze我得到了同样的错误信息 @Fredrick谢谢你的建议。我想看看在我跳入手动复制 – brycemcd 2011-06-07 18:04:32

回答

6

我想后从混帐的适当的源文件中的一些注释:

的Git回购发现是按照如下进行:

/* 
* Test in the following order (relative to the cwd): 
* - .git (file containing "gitdir: <path>") 
* - .git/ 
* - ./ (bare) 
* - ../.git 
* - ../.git/ 
* - ../ (bare) 
* - ../../.git/ 
* etc. 
*/ 

它查明,这是由于以下混帐回购协议:

/* 
* Test if it looks like we're at a git directory. 
* We want to see: 
* 
* - either an objects/ directory _or_ the proper 
* GIT_OBJECT_DIRECTORY environment variable 
* - a refs/ directory 
* - either a HEAD symlink or a HEAD file that is formatted as 
* a proper "ref:", or a regular file HEAD that has a properly 
* formatted sha1 object name. 
*/ 

看看您的.git有什么问题。这与@Chris Nicola的答案HEAD小写等有关。

+0

好的调用。看起来像我的对象目录已损坏...... /叹气。谢谢@manojilds。 – brycemcd 2011-06-07 23:17:20

0

无论如何克隆到另一个目录。您可以将对象从原始仓库中的.git目录中复制,并将仓储复制到新仓库中的.git文件夹中。跳过任何将被覆盖的文件。你应该能够复制隐藏指针和gitk - 所有应该告诉你他们。

2

很难说确切的原因,但你的.git必须以某种方式被破坏。有一篇博客文章here,有人在他的系统中将他的HEAD文件重命名为全部小写,这对他造成了这个问题。不要说这是你的特殊问题,但你可能要仔细看看.git文件夹。

您可以尝试从github签出一个新文件夹,然后比较两个.git文件夹的差异。

+1

如果事实证明这不是OP的问题,我强烈建议您创建一个新问题,然后以此作为回答。这应该足够高,以便任何搜索Git问题的人都可以找到它。非常有用的信息。 – 2011-06-07 18:22:32

+0

我会认为,从来没有发生过这种事情,但我可以看到它是一个很好的Windows故障排除步骤,尽管没有太多人使用FAT/VFAT系统,所以我不知道实际发生的频率如何。 – 2011-06-07 21:06:47

+0

今天我有一个类似的问题,在我的情况下,我将存储库备份到外部NTFS驱动器,而根本不复制到.git/refs/heads/master的符号链接的HEAD文件。 'ln -s .git/refs/heads/master .git/HEAD'固定存储库... – l4mpi 2013-02-05 09:24:18

0

另一种可能性可能是您的git文件的权限已损坏。检查以确保您拥有读取权限。

当我的权限混入到计算机中时,我遇到了类似的问题。

-1

检查您是否从正确的目录提供此命令。我遇到了同样的错误。然后我到了.git所在的目录并发出command.Its工作正常。