致命:不是 git 存储库:'.'

沙达斯维亚

我有一个git名为/tmp/A. 当我cd/tmp/A和运行任何git从庆典它的作品不错,但是当我运行命令git从命令callCommand哈斯克尔PROGRAMM电话,我得到错误:

fatal: Not a git repository: '.'

如果我命令callCommand pwdls -la之前运行git,例如:

callCommand $ "pwd; ls -la; git status"

它显示它位于正确的路径/tmp/Als显示存储库存在并具有.git目录,但git返回错误。

我做错了什么?

更新。

ls 输出是

drwxrwxr-x 11 xxx xxx 4096 Mar 22 11:44 .
drwxrwxr-x  3 xxx xxx 4096 Mar 22 11:44 ..
drwxrwxr-x  8 xxx xxx 4096 Mar 22 11:44 .git
-rw-rw-r--  1 xxx xxx  270 Mar 22 11:44 .gitignore
drwxrwxr-x  7 xxx xxx 4096 Mar 22 11:44 dir2
drwxrwxr-x  8 xxx xxx 4096 Mar 22 11:44 dir1
drwxrwxr-x  9 xxx xxx 4096 Mar 22 11:44 test

更新。更新。

post-receive克隆的 git 存储库的钩子调用失败的程序当不是从这个存储库的钩子运行相同的程序时,它工作正常。为什么钩子的自克隆存储库不起作用?

周二

TL;DR:你可能想要unset GIT_DIR在你的脚本的前面(好吧,但是 Haskell 拼写了这个操作)。


这里的问题是,虽然/tmp/A 一个合理的 Git 存储库,但实际的存储库本身位于.git子目录中。也就是说,/tmp/A/工作树/tmp/A/.git正确存储库

在正常操作中,我们运行,例如,从我们的工作树运行工作树包含目录,或者在某些情况下,1一个文件。顶级命令检查,找到它,然后说啊哈,存储库. 或者,它没有找到,所以它向上看一层——例如,从它爬上一层到它自己,并在那里检查这重复直到某种停止点。2git subcommand arguments ...git statusgit commit -m message.git.gitgit.git./.git.git/tmp/A/tmp.git

在所有情况下,此搜索过程必须要么成功停止(通过找到正确的存储库),要么随着消息而终止现在是关键的,隐藏在明显的视线中的秘密:此时,顶级命令设置一个名为的环境变量,以包含实际存储库的路径名。然后它运行用于定位存储库的子命令在我们正常使用情况下,我们都在包含目录,这台和子命令所有工作。git subcommandfatal: Not a git repository ...gitGIT_DIR$GIT_DIR/tmp/A/tmp/A.git$GIT_DIR/tmp/A/.git

但在你的情况下,$GIT_DIR已经设置好了。特别地,它被设置为.所以现在顶级git命令停止搜索它只是验证它$GIT_DIR是有效的并命名一个 Git 存储库,或者以fatal错误消息结束。由于/tmp/A 不是存储库 - 它确实是/tmp/A/.git- 这会导致问题。

取消设置环境变量会重新打开搜索,从而解决问题。您也可以--git-dir用作参数,或在$GIT_DIR. 请注意,相同的规则适用于$GIT_WORK_TREE:--work-tree参数集$GIT_WORK_TREE,如果你不使用它并且$GIT_WORK_TREE 没有设置,前端git命令使用它爬上文件系统树到一个.git目录或文件代码来找到你的工作树。所以,如果$GIT_DIR还是$GIT_WORK_TREE 当您运行设置,Git会遵守的,除非你覆盖它们和/或git subcommand--git-dir--work-tree

钩子总是$GIT_DIR固定的。他们可能也可能没有$GIT_WORK_TREE设置。它们中的大多数运行在工作树的顶层,但是,正如githooks 文档所指出的,pre-receive, update, post-receive, post-update, 和push-to-checkout都运行在$GIT_DIR.


1.git-as-A-文件伎俩被两个子模块,并添加工作树,在现代的Git。Git 1.7 和早期的 1.8 留下带有嵌入式.git目录的子模块,并且不支持添加的工作树。

2明显的停止点是到达/时,此时无处可攀。然而,默认情况下,Git 是小心的,至少在 Unix 和类 Unix 系统上,以避免爬过挂载点挂载点允许您将不同的文件系统层和/或存储池嫁接到单个树状结构的层次结构中。/tmp例如,通常它本身可能是一个内存文件系统,并且大型系统可能会将“系统存储”(/等等)与“用户存储”(/home隔离开来Docker 使用挂载点来重构 Docker 镜像中的文件系统,等等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何“解决致命问题:不是git存储库”?

Git推送:“致命的“来源”似乎不是git存储库-致命无法从远程存储库读取。”

git:致命的:无法从远程存储库读取

致命的:'origin'似乎不是git存储库

git status中的“致命:不是git存储库(或任何父目录)”

'heroku'似乎不是git存储库

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

GIT:致命的:'master'似乎不是git存储库

无法将git存储库部署到dokku实例(致命:{reponame}似乎不是git存储库)

致命:不是git存储库(或任何父目录):在Mac OS中为.git

git bash“不是git存储库”错误

致命:.git / info / refs无效:这是git存储库吗?

带有git工作树的Docker:致命的:不是git存储库

Docker构建映像抱怨:致命:不是git存储库(或任何父目录):.git

Git Remote似乎不是git存储库

Python:致命的:不是git存储库在文件系统边界停止(未设置GIT_DISCOVERY_ACROSS_FILESYSTEM)

致命:不是git储存库-BSoD之后

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

致命的:安装mod_python时不是git存储库

git clone致命:'origin'似乎不是VMware vmhgfs共享的git存储库

.bashrc未经我批准即运行别名:致命:不是git存储库(或任何父目录):.git

无法使用cd致命:不是git存储库(或任何父目录):.git

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

致命:'jigar / test.git'似乎不是一个git存储库致命:远端意外挂断

Git 致命无效:这是 git 存储库吗?

致命:不是 git 存储库(或安装点 / 之前的任何父存储库)

Docker 映像 git clone 错误“致命:不是 git 存储库”

Visual Studio Code 终端“git add .”发送以下错误消息“致命:不是 git 存储库(或任何父目录):.git”

git 致命:“开发”似乎不是 git 存储库