我有一个我去年在同一个盒子上使用的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工作得很好
答案 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所在的目录并给出了命令。它工作正常。