Git repo错误消息,它不是一个回购......但确实如此

时间:2011-06-07 17:49:13

标签: git

我有一个我去年在同一个盒子上使用的git repo。今天我运行git status并收到错误消息:

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

我有一个.git目录,它填充了我为该repo提供的数千次提交。我不想重新初始化回购,因为担心它会覆盖历史。我也不是真的想从github中重新提取它,因为我已经在分支机构中隐藏了一些变化,我有一段时间没有把它推到GH上。

修改

我有理由相信这不是我的环境。其他git repos工作得很好

5 个答案:

答案 0 :(得分:7)

我想从git的相应源文件中发布一些评论:

Git repo发现按以下方式完成:

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

它确定它是一个git repo,如下所示:

/*
 * 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小写等的回答有关。

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

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

当我的许可在混入计算机时搞砸了,我遇到了类似的问题。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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