接收“致命:没有git存储库”;当试图远程添加一个Git回购

我遵循本教程。一切正常,直到我在本地机器上运行它(在用它们的实际值替换__abc0之后):

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

我收到以下错误信息:

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

我如何通过这一步?

1274297 次浏览

您是否初始化了一个本地Git存储库(这个远程存储库应该添加到其中)?

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

git init试试。

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

如果您尝试在当前工作目录不在Git存储库中时使用Git命令,则会出现此错误。这是因为,默认情况下,Git将寻找.git存储库目录(在项目根目录内部?),正如我对“Git不会显示日志,除非我在项目目录中”的回答所指出的:

根据官方的Linux内核Git文档GIT_DIR是[一个环境变量],设置为查找.git目录(在当前目录中) 工作目录?)默认值:

如果设置了GIT_DIR环境变量,则它指定了一个路径来代替默认的.git作为类的基 库。< / p >

你要么需要将cd放入存储库/工作副本中,要么你一开始就没有初始化或克隆存储库,在这种情况下,你需要在你想放置repo的目录中初始化一个repo:

git init

或者克隆存储库

git clone <remote-url>
cd <repository>

我有同样的问题,而我尝试任何git -命令(如git状态)使用windows cmd。所以我所做的是在环境变量中为窗口https://windows.github.com/安装git之后,在“path”中添加git的类路径。varaiable。通常git会安装在C:/user/"username"/appdata/local/git/bin上,在环境变量的PATH中添加这个

在cmd上还有一件事,去你的git仓库或cd到你的克隆在你的窗口上,通常它们会存储在github cd Document/ github /yourproject下的文档中,之后你可以有任何git命令

在我的例子中,我使用了Tortoise SVN,并犯了同时使用Visual Studio GIT函数的错误。这使得Visual Studio将HEAD文件锁定在。git文件夹中,因此VS和Tortoise都无法访问repo,我从两个应用程序中都得到了“fatal: Not a git repo…”错误。

解决方案:

  1. 进入。git文件夹并重命名“HEAD. git”。锁定"到"HEAD"
  2. 决定使用一个GIT管理应用程序,不要使用另一个

注意:这并没有解决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'。虽然Remotes 在那里,所以我做了git fetch --all,然后只是git reset --hard origin/master让自己到以前的回购状态。

注意,如果有一些未提交的更改,你可以通过git statusgit diff等方法看到它们。然后在运行重置之前执行git diff yourfile > patch

至少对我来说reflog (git reflog)完全消失了。因此,如果你做重置,有一些变化,你想防止,我不确定你可以得到他们重置后再回来。因此,要确保所有不能丢失的更改都已备份,最终只需在尝试此操作之前复制副本即可。

当我在文件系统上移动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。

对我来说,这与我的.git/路径中的畸形所有权有关。root拥有.git/HEAD.git/index,防止jenkins用户运行作业。

可能太迟了,但另一个解决方案可能会帮助未来的游客。 首先删除旧的.git目录-

rm .git

然后重新初始化git repo

git init

注意:第一步会破坏所有保存在本地设备上的git元数据,git会“重新”启动。所以,只有在万不得已的时候才求助于这个答案。

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

因此,将目录更改为从git签出代码的存储库目录,然后运行此命令。

  • $ git结帐

似乎您没有访问特定的文件夹。例如,如果我在一个名为bugsBunny的项目中工作,它保存在d:/work:code文件夹中,所以首先你必须使用cd d:/work/code/bugsBunny进入这个文件夹,然后你可以继续使用git命令。

转到本地repo存储的源文件夹,例如我的在c:/GitSource中,右键单击文件夹,在这里单击git bash,然后单击git状态....

对我来说,只有当一个人试图从非git目录(即来自其他目录,这不是工作副本)执行git命令时,才会出现问题。

要解决这个问题,在你正在执行的git命令中添加-C <git dir> git status将变成git -C /dir/to/git statusgit add -A将变成git -C /dir/to/git -A

$ git status
fatal: Not a git repository:

只需在你的cmd或git shell或任何其他终端中输入以下命令:

$ git init

我的问题是,对于我的操作系统的一些问题,我的本地存储库上的任何命令都以“fatal: Not a git repository(或任何父目录):.git”结尾,其中包括fsck命令。

问题是空HEAD文件

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

echo 'ref: refs/heads/ML_#94_FILTER_TYPES_AND_SPECIAL_CHARS' > .git/HEAD

它工作。

GIT_DIR应该被取消设置:unset GIT_DIR

在我的案例中,我发现窗口中的git从某种程度上对驱动器号变得区分大小写。

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

git为be工作得很好,突然它开始显示这个fatal: Not a git repository (or any of the parent directories): .git消息。

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

一切都恢复正常,git也识别出我更改/未分级的文件。

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

请尝试git init。

在GitLab的身份验证问题之后,我在Jenkins Git插件上遇到了这个问题。Jenkins正在报告'hudson.plugins.git.GitException:[…]stderr: GitLab:无法找到您正在寻找的项目。

. error: cannot read from remote repository.

然而,如果我做了一个“git克隆”或“git获取”直接从Jenkins框(命令行)它工作没有问题。

这个问题是通过删除解决的,在Jenkins作业文件夹中的整个/workspace目录为特定的作业,例如。

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

假设本地的。git文件夹已经过时/损坏?

恢复.git/ORIG_HEAD和其他根.git回购文件

从备份恢复后,我得到了这个错误,显然。git目录根中包含的文件没有到目标,但所有的子文件夹都这样做了,起初我以为回购是完整的。

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

为了帮助其他人,我得到了这个错误消息不小心删除了.git/objects/

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

恢复它解决了问题。

这也可能是由于权限。检查所有者/组权限,并确保您有足够的权限访问该数据。在我的例子中,我在一个所有权设置为root:root的回购中运行“git status”时遇到了这个错误。以根用户身份运行“git status”解决了我的问题。或者,如果您不希望用户/组所有权为root:root,则将repo更改为您可以访问的内容。

在我的情况下,文件.git/HEAD已损坏(只包含点)。所以我编辑了它,并将其内容替换为:

ref: refs/heads/master

然后它又开始工作了。

我有这个问题,并通过添加README修复了它。md文件

在我的例子中,系统崩溃导致HEAD文件被损坏。本指南将展示如何修复该问题以及您可能遇到的其他问题。

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

当我的客户Smartgit在我的.git/HEAD文件中放了一个换行符时,发生在我身上。删除空行可以解决这个问题。

在你想要的文件夹中使用terminal/cmd点击git init。它会起作用的。

如果你在你的自托管GitHub actions logs中看到这个错误,那么它可能是你没有使用Github操作支持的最新git版本。

为了了解它支持哪个版本,请到actions/checkout logs并将您的server git版本升级到上述版本或更高版本。

当你看到这个试图推到github时,你可能必须首先在github初始化这个repo: https://github.com/new

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

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

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

我在这里读到的答案没有一个是我的情况的解决方案,我发现其中一些答案是危险和误导性的。

我得到了错误,因为我将一个存储库从OpenBSD移动到Linux,但这可能只通过改变shell发生,在OpenBSD中,我使用(在.kshrc中使用ksh)调用git(注意路径中的形式~/):

alias git-abc='git --git-dir=~/repos/abc --work-tree=~/Development/abc'

在OpenBSD中使用ksh,它使用该语法来定义别名,而在linux中使用bash,在这样完全相同的别名定义中引用的~在别名被调用时不会展开,我通过删除别名定义中的引号来解决。

alias git-abc=git --git-dir=~/repos/abc --work-tree=~/Development/abc

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

注:以上大部分解决方案对我来说都不适用。

我也遇到了同样的问题,所以我做了一个变通方案。

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目录复制到旧目录中(为了代码安全,请保存一份回购副本)。

执行git status,这将重新索引文件。你会让它重新工作的。

谢谢,希望能对一些人有所帮助。

我刚刚在我的目录下重新初始化了git

git init

这个方法奏效了

如果你运行

git状态

并查看文件被下载,然后删除或拒绝,开始检查这个方法一步一步,在每个部分再次检查目录:

1- git init     (perhaps you have not the right git directory)
2- git status   (see where are you and what happened in cloning)
3- git reset --hard HEAD~1 (lose all the last changes in locally committed by cloning process)

现在您已经返回到上一个HEAD。因为你使用了——很难,你的文件在克隆中最后提交时会重置到它们的状态。 再次检查你的项目文件夹

我在父文件夹中做git branch,没有初始化git。做git init没有帮助我。 最后我意识到我在父文件夹中,并在子目录中执行cd,再次执行git branch,它工作了。 如果git init不起作用,而你有所需的权限,这可能就是你的情况。 尝试改变目录,它将工作
在我的例子中,我工作的目录被分配给了系统上的另一个用户。 在验证这个目录中有.git/文件夹后,我运行

git config --global --add safe.directory <absolute_path_to_the_directory>

这为我解决了问题。