尝试远程添加Git仓库时接收“致命:不是git存储库”

时间:2011-01-07 22:04:35

标签: git

我通过以下教程向Git介绍自己:

一切正常,直到将repo添加到本地计算机的部分:

git remote add nfsn ssh://USERNAME@NFSNSERVER/home/private/git/REPONAME.git

(用正确的名称替换USERNAME,NFSNSERVER和REPOAME后)我收到错误:

fatal: Not a git repository (or any of the parent directories): .git

你能帮助我度过这一步吗?

33 个答案:

答案 0 :(得分:781)

您是否已初始化了一个本地Git存储库,该存储库应添加到该存储库中?

您的本地目录是否有.git文件夹?

尝试git init

答案 1 :(得分:72)

如果在当前工作目录不在Git存储库中时尝试使用Git命令,则会出现此错误。那是因为,默认情况下,Git会查找.git存储库目录(在项目根目录中?),如my answer to "Git won't show log unless I am in the project directory"所指出的那样:

  

根据official Linux Kernel Git documentation,   GIT_DIR是[环境变量]设置为查找.git目录(在当前   工作目录?)默认情况下:

     
    

如果设置了GIT_DIR环境变量,则它指定要使用的路径而不是默认的.git作为基础的     库中。

  

您需要cd进入存储库/工作副本,或者您首先没有初始化或克隆存储库,在这种情况下您需要初始化存储库要放置仓库的目录:

git init

或克隆存储库

git clone <remote-url>
cd <repository>

答案 2 :(得分:21)

我的问题是,对于我的操作系统的一些小问题,我的本地存储库上的任何命令以“致命:不是git存储库(或任何父目录):。git”结束,包含fsck命令。

问题是空HEAD文件

我能够找到我在.git / refs / heads中工作的实际分支名称然后我这样做了:

public class1(...., Action<Object,EventArg> callStart){
...
c2 = new class2(..., callStart);
}

public class2(...., Action<Object,EventArg> callStart){
...
c3 = new class3(..., callStart);
}

public class3(...., Action<Object,EventArg> callStart){...

OnCall += (sender, e) => callStart(sender, e);
}

有效。

答案 3 :(得分:17)

注意:这不能解决常见问题,这是OP的问题,而是可能出现此错误消息的不同问题。我只是想写下这个答案,我不想做新的问题,告诉我是否应该这样做:P

我遇到了这种情况,很可能是因为我遇到了某些崩溃,即使.git确实存在,我也会收到此错误。

smar@aaeru ~/P/Nominatim> git status
fatal: Not a git repository (or any of the parent directories): .git
smar@aaeru ~/P/Nominatim [128]> ls .git
COMMIT_EDITMSG  config*  FETCH_HEAD  HEAD  index  logs/  modules/  objects/  ORIG_HEAD packed-refs

由于我没有任何真正需要保留的东西,我只是采用虚拟方式,并且做了......

smar@aaeru ~/P/Nominatim [128]> git init
Reinitialized existing Git repository in /home/smar/Projektit/Nominatim/.git/

仍然无法正常工作,例如git log会返回fatal: bad default revision 'HEAD'。虽然遥控器在那里,所以我做了git fetch --all,然后只是git reset --hard origin/master让我自己进入了以前的回购状态。

请注意,如果有一些未提交的更改,您可以使用git statusgit diff等查看这些更改。然后在运行重置之前只需git diff yourfile > patch

至少对我来说,reflog(git reflog)完全消失了。因此,如果你进行了重置,并且有一些想要防止的更改,我不确定你可以在重置后重新获得它们。因此,请确保您拥有所有不会丢失的更改,最终只需在尝试之前复制克隆。

答案 4 :(得分:6)

我在文件系统上移动了git项目的位置后,发生了这个问题。当我运行一些git命令时,发生了错误,例如:

$ git status
fatal: Not a git repository: /home/rospasta/path_old/gitprojecta/.git/modules/.travis

我在/home/rospasta/path_old/gitprojecta/.travis/.git找到了项目旧位置的绝对路径。手动更新新位置的这条路径解决了我的问题。

所以我的问题可能是也可能不是git问题,但HTH。

答案 5 :(得分:5)

$ git status
fatal: Not a git repository:

只需在cmd或git shell或任何其他终端中键入以下内容:

$ git init

答案 6 :(得分:4)

在命令行/ CLI中,如果当前目录不是存储库,则会出现此错误。所以,你必须先将CD放入回购。

答案 7 :(得分:4)

为此,您需要输入bitbucket命令中缺少的一个命令

请尝试git init。

答案 8 :(得分:4)

好像你没有去你的特定文件夹。例如,如果我正在处理名为bugsBunny的项目并将其保存在文件夹d:/ work:code中,那么首先你必须使用cd d:/ work / code / bugsBunny转到该文件夹​​,然后你可以继续使用你的git命令。

答案 9 :(得分:3)

可能为时已晚,但可能有助于未来访客的另一种解决方案。 首先删除旧的.git目录 -

rm .git

然后再次初始化git repo

git init

答案 10 :(得分:3)

即使我有同样的问题。我写了一个shell脚本,它将使用crontab在17:55的一周工作日将我的所有代码备份到我的git repo。通过查看cron的日志我发现了上述问题。

上述问题仅在您尝试从非gir目录执行git命令时(即来自不是工作副本的其他目录)。修复此添加-C <git dir>在您正在执行的git命令中 git statusgit -C /dir/to/git statusgit add -Agit -C /dir/to/git -A

答案 11 :(得分:3)

在我的情况下,我使用了Tortoise SVN并且错误地同时使用了Visual Studio GIT功能。这使得Visual Studio将HEAD文件锁定在.git文件夹中,因此VS或Tortoise都无法访问repo,我从两个应用程序中得到了“致命:不是git repo ...”错误。

<强>解决方案:

  1. 进入.git文件夹并将“HEAD.lock”重命名为“HEAD”
  2. 决定使用一个GIT管理员应用程序而不要触摸另一个

答案 12 :(得分:2)

下面的错误似乎Gits没有在当前目录中找到.git文件,因此抛出错误消息。

因此,将目录更改为存储库目录,您可以从git中检出代码,然后运行此命令。

  • $ git checkout

答案 13 :(得分:2)

转到存储本地存储的源文件夹,在c:/ GitSource中找到我的示例,在文件夹中单击鼠标右键,在此处单击git bash,然后单击git status ....

答案 14 :(得分:2)

万一它对别人有帮助,我会在意外删除.git / objects /

后收到此错误消息
  

致命:不是git存储库(或任何父目录):.git

恢复它可以解决问题。

答案 15 :(得分:2)

在我的情况下,当我尝试使用windows cmd的任何git - 命令(例如git status)时,我遇到了同样的问题。所以我要做的是在环境变量中安装git for window https://windows.github.com/之后,在&#34; PATH&#34;上添加git的类路径。 varaiable。通常git将安装在C:/ user /&#34;用户名&#34; / appdata / local / git / bin在环境变量的PATH上添加

还有一个在cmd上的东西转到你的git存储库或cd到你的窗口克隆在你的窗口,通常它们将存储在github下的文档cd / Github / yourproject之后你可以有任何git命令< / p>

谢谢

答案 16 :(得分:1)

我遇到这个问题是因为遇到了错误信息

fatal: not a git repository: '~/repos/abc'

因为我担心 git 版本之间存在一些不兼容(幸运的是没有),

我在这里读到的所有答案都不是我案例的解决方案,我发现其中一些答案很危险且具有误导性。

我收到错误是因为我将一个存储库从 OpenBSD 移到了 Linux,但这可能只是通过更改 shell 来发生,在 OpenBSD 中我使用(在 .kshrcksh 中)调用 {{ 1}}(注意路径中的 git 形式):

~/

在带有 alias git-abc='git --git-dir=~/repos/abc --work-tree=~/Development/abc' 的 OpenBSD 中,它使用该语法来定义别名,而在带有 ksh 的 linux 中,当别名为调用,我通过删除别名定义中的引号来解决。

bash

答案 17 :(得分:1)

在我的情况下,我发现Windows中的git从某些角度来看对驱动器号有区分大小写。

在Windows cli命令中升级git二进制文件后,以前的工作已停止。 例如,脚本中的路径是 D :\ bla \ file.txt,而git命令只接受 d :\ bla \ file.txt

答案 18 :(得分:1)

git工作正常,突然间它开始显示此fatal: Not a git repository (or any of the parent directories): .git消息。

对于我不确定.git文件夹中有什么损坏,我做了git clone ** newfolder并将整个.git文件夹复制到我的corrupted / old文件夹,我在git开始显示错误消息之前进行了更改。

一切恢复正常,git也识别出我已更改/未播放的文件。

答案 19 :(得分:1)

应取消设置GIT_DIR:unset GIT_DIR

答案 20 :(得分:1)

对我来说,这与我.git/路径中的所有权格式错误有关。 root拥有.git/HEAD.git/index,阻止jenkins用户运行该作业。

答案 21 :(得分:0)

在使用GitLab进行身份验证问题后,我遇到了Jenkins Git插件的这个问题。詹金斯报告'hudson.plugins.git.GitException:[...] stderr:GitLab:找不到你要找的项目。 致命:无法从远程存储库中读取。'

但是,如果我直接从Jenkins框(命令行)执行'git clone'或'git fetch',它的工作没有问题。

删除该特定作业的Jenkins作业文件夹中的整个/ workspace目录,解决了该问题,例如

rm -Rf $JENKINS_HOME/jobs/myJenkinsJob/workspace/

据推测,本地.git文件夹已过时/已损坏?

答案 22 :(得分:0)

恢复.git/ORIG_HEAD和其他root .git repo文件

我从备份恢复后出现此错误,显然.git目录根目录中包含的文件没有到达目标,但是所有子文件夹最初都是这样做的,我认为repo完好无损。

我通过恢复根文件修复了它。

答案 23 :(得分:0)

这也可能是由于权限所致。检查所有者/组权限,并确保您具有访问该数据的足够权限。就我而言,我在所有权已设置为root:root的回购中运行“ git status”时遇到此错误。以root身份运行“ git status”解决了我的问题。另外,如果您不希望用户/组的所有权为root:root,则将存储库设置为您有权访问的内容。

答案 24 :(得分:0)

在我的情况下,.git / HEAD文件损坏(仅包含点)。因此,我对其进行了编辑,并将其内容替换为:

jj = 3:N

它又开始工作了。

答案 25 :(得分:0)

我遇到了这个问题,并通过添加README.md文件来解决了该问题

答案 26 :(得分:0)

在我的情况下,系统崩溃导致HEAD文件损坏。本指南说明了如何解决该问题以及您可能会遇到的其他问题。

https://git.seveas.net/repairing-and-recovering-broken-git-repositories.html

答案 27 :(得分:0)

当我的客户Smartgit在我的.git / HEAD文件中添加换行符时发生。删除空行将其修复。

答案 28 :(得分:0)

在所需的文件夹中使用terminal / cmd 击git init。会做的。

答案 29 :(得分:0)

如果您在自托管的GitHub actions logs中看到此错误,则可能是您没有使用Github操作支持的最新git版本。

要知道支持哪个版本,请转到actions/checkout日志,然后将您的server git版本升级到上述版本或更高版本。

答案 30 :(得分:0)

看到这种尝试推送到 github 的方法时,您可能必须首先在github上初始化此存储库:https://github.com/new

答案 31 :(得分:0)

我知道已经有很多答案了,但是如果你修改了一堆文件,你仍然害怕失去工作。

注意:上述大多数解决方案对我不起作用。

我遇到了同样的问题,所以我做了一个解决方法。

git clone <same project>
git checkout <to desired branch>//changed to respective branch
git branch // verify if you have same branch set 
git pull

然后将 .git 目录复制到旧的(为了代码安全,请保存一份 repo 的副本)。

并执行 git status ,这将重新索引文件。您将再次使用它。

谢谢,希望能帮到一些人。

答案 32 :(得分:-1)

将git设置为您的路径 谷歌把git放在路径Windows / mac