来自git status的错误信息:"fatal: Not a git repository (or any of the parent directories)"。

134

这个命令用来获取文件并编译它们:

git clone a-valid-git-url
例如:
git clone git://cfdem.git.sourceforge.net/gitroot/cfdem/liggghts

然而,git status(或任何其他git命令)随后会出现上述的fatal: Not a git repository (or any of the parent directories)错误。

我做错了什么?


6
检出的代码位于 liggghts 目录中。 - Eugen Constantin Dinca
15个回答

215

你必须首先实际进入该目录:

$ git clone git://cfdem.git.sourceforge.net/gitroot/cfdem/liggghts
Cloning into 'liggghts'...
remote: Counting objects: 3005, done.
remote: Compressing objects: 100% (2141/2141), done.
remote: Total 3005 (delta 1052), reused 2714 (delta 827)
Receiving objects: 100% (3005/3005), 23.80 MiB | 2.22 MiB/s, done.
Resolving deltas: 100% (1052/1052), done.

$ git status
fatal: Not a git repository (or any of the parent directories): .git
$ cd liggghts/
$ git status
# On branch master
nothing to commit (working directory clean)

7
当Git损坏其自己的.git目录时,您也会遇到此错误。我进行了一次pull操作,并看到了消息“正在后台自动压缩存储库以获取最佳性能。”然后我尝试执行更多操作,但只收到了OP错误消息。我的.git文件夹仍然存在,但是Git不知何故已经损坏了它。运行“git init”修复了问题。 - Cerin
7
我有多愚蠢啊,在进入目录之前尝试使用git status :) 谢谢。 - webHasan

31

我刚刚收到了这条消息,有一个非常简单的答案,在尝试其他方法之前,请在父目录中输入git init

这将初始化git的目录。然后git addgit commit应该可以工作。


9
在克隆之前还是之后?这会创建一个新的Git仓库吗?如何与已克隆的现有Git仓库和历史记录一起工作?在这种安排下,原始的“remote”设置会发生什么? - Michael Durrant
这就像是在git中忘记了一个分号,我感觉太蠢了。 - Malekai
2023年更新:git init命令将显示一个消息,表示当前的git仓库已被“重新初始化”,但不会影响文件(来自克隆)或remote设置。然而,这并不重要,因为实际的问题仍然是用户需要进入目录来执行此操作。 - undefined

15
在我的情况下,是一个名为 GIT_DIR 的环境变量,我添加了这个变量以便更快地访问。但这也导致我在SourceTree中的所有本地仓库出现故障 :(

导出 GIT_DIR=path/to/dir/.git - Pipper Tetsing
天啊..我不小心在我的脚本中引入了一个完全相同名称的变量,导致了问题。 - Possum Gallo

11

有时是由于ssh的原因。因此,您可以使用以下方法:

git clone https://cfdem.git.sourceforge.net/gitroot/cfdem/liggghts

而不是:

git clone git://cfdem.git.sourceforge.net/gitroot/cfdem/liggghts

我在尝试将一个repo克隆到我的本地机器时遇到了错误。我从使用https://切换到git://,并成功克隆了它。感谢您指引我正确的方向。 - Scott Wade
我使用了git clone git@....xyz.git,并且它对我起作用了。 - Altaf Patel
我使用了git clone git@....xyz.git,并且它对我有效。 - undefined

5

如果现有项目的解决方案计划在VS Code中转移到TSF:

打开终端并运行以下命令:

  1. 在该文件夹(根目录)中初始化 git

    git init

  2. 添加 Git

    git add .

  3. TSf/Git 链接到该项目中——将{url}替换为您的git地址

    git remote add origin {url}

  4. 提交这些更改:

    git commit -m "initial commit"

  5. 推送——我将代码推送为Version1,您可以为您的分支使用任何名称

    git push origin HEAD:Version1


4
git clone https://github.com/klevamane/projone.git
Cloning into 'projone'...
remote: Counting objects: 81, done.
remote: Compressing objects: 100% (66/66), done.
remote: Total 81 (delta 13), reused 78 (delta 13), pack-reused 0
Unpacking objects: 100% (81/81), done.

你需要执行 "cd projone" 命令

然后你可以检查状态。


一开始很难注意到这一点的原因是,你已经在电脑上创建了一个同名文件夹,并将项目克隆到那里,所以你需要再次更改目录。



4
在我的情况下,当我使用Windows cmd尝试任何git --命令(例如git status)时遇到了相同的问题。所以我做的是,在安装了git for window https://windows.github.com/之后,在环境变量中将git的类路径添加到“PATH”变量中。通常,git会安装在C:/user/"username"/appdata/local/git/bin上,在环境变量中的PATH中添加此路径。
还有一件事,在cmd中进入你的git存储库或转到克隆存储库的位置,通常它们会存储在文档下的github中。
cd Document/Github/yourproject

之后您可以执行任何git命令


4

当我尝试使用 git init 初始化 git 时,此错误得到了解决。它起作用了。


3

我遇到了另一个问题。我在一个git目录中,但是通过符号链接进入的。我必须直接进入该目录(即不通过符号链接),然后它就可以正常工作。


2
在我的情况下,原始存储库是一个裸库。
因此,我必须在Windows中输入以下命令:
mkdir   dest
cd dest
git init
git remote add origin a\valid\yet\bare\repository
git pull origin master

要检查一个仓库是否是裸仓库:

git rev-parse --is-bare-repository 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接