【问题标题】:GIT_DISCOVERY_ACROSS_FILESYSTEM not setGIT_DISCOVERY_ACROSS_FILESYSTEM 未设置
【发布时间】:2023-04-05 13:37:01
【问题描述】:

我已经搜索并阅读了一些帖子,但我的问题与描述的不同。所以这是问题所在:在磁盘外部分区下的文件夹中使用git clone 工作正常,但所有 git 命令都失败。无法执行git statusgit log...总是出错

fatal: Not a git repository (or any parent up to mount parent /home/kozi)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

请帮帮我..

.
├── abi
├── 仿生
├── 可开机
├── 建造
├── cts
├── 达尔维克
├── 发展
├── 设备
├── 文档
├── 外部
├── 框架
├── gdk
├── 硬件
├── libcore
├── libnativehelper
├── ndk
├── 包
├── pdk
├── 预制件
├── .repo
├── sdk
├── 系统
└── 工具

【问题讨论】:

  • 你的 git repo 中tree 的输出是什么?
  • 好的,ls .git 的输出是什么?您可以在 pastebin.com 上粘贴更长的输出并链接到它们。
  • pastebin 有大小限制,我上传了文件here
  • ls .git 的输出是什么?
  • @Chronial,你的意思是树中每个嵌套文件夹的 .git 输出吗?或者是否有您希望我提供的任何特定目录。在根文件夹中,我只能看到 .repo 而没有 .git

标签: git filesystems boundary


【解决方案1】:

以下命令用于初始化 git,添加远程源和 ser 默认上游

git init
git remote add origin {REMOTE_URL}
git pull origin master
git branch --set-upstream-to=origin/master master
git pull

【讨论】:

    【解决方案2】:

    我在复制本地存储库时遇到了这个问题。

    sudo cp -r original_repo backup_repo
    cd backup_repo
    
    git status
    fatal: Not a git repository (or any parent up to mount point /data)
    Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
    

    我已经按照一些答案的建议尝试了git init,但它不起作用。

    sudo git init
    Reinitialized existing Git repository in /data/HQ/SC_Educations/hq_htdocs/HQ_Educations_bak/.git/
    

    我通过更改 repo 的所有者解决了这个问题

    sudo chown -R www:www ../backup_repo
    
    git status
    # On branch develop
    nothing to commit, working directory clean
    

    【讨论】:

      【解决方案3】:

      简而言之,git 正在尝试访问它认为在另一个文件系统上的 repo,并明确告诉它你对此没问题,你必须设置环境变量 GIT_DISCOVERY_ACROSS_FILESYSTEM=1

      我在 CI/CD 环境中工作并使用 dockerized git,所以我必须在那个环境中设置它 docker run -e GIT_DISCOVERY_ACROSS_FILESYSTEM=1 -v $(pwd):/git --rm alpine/git rev-parse --short HEAD\'

      如果您好奇:上面将 $(pwd) 挂载到 git docker 容器中,并将“rev-parse --short HEAD”传递给容器中的 git 命令,然后它会针对该挂载的卷运行。

      【讨论】:

        【解决方案4】:

        问题是您不在正确的目录中。 Jupyter 中的一个简单修复是执行以下命令:

        1. 移动到 GitHub 目录进行安装
        2. 运行 GitHub 命令

        这是一个在 Jupyter 中使用的示例命令:

        %%bash
        cd /home/ec2-user/ml_volume/GitHub_BMM
        git show
        

        请注意,您需要在同一个单元格中执行命令。

        【讨论】:

          【解决方案5】:

          检查你是否真的在 github repo 下。

          所以,.git/ 的列表应该会给你结果..否则你可能在你的回购之外的某个级别。

          现在,cd 到你的 repo 就可以了。

          【讨论】:

            【解决方案6】:

            跑过这个页面,几个喜欢它的人都在谈论 GIT_DISCOVERY_ACROSS_FILESYSTEM 未设置消息。在我的情况下,我们的系统管理员决定 apache2 目录需要位于已挂载的文件系统上,以防服务器的磁盘停止工作并不得不重建。我用一个简单的 df 命令找到了这个:

            -->  UBIk  <--:root@ns1:[/etc]
            --PRODUCTION--(16:48:43)--> df -h
            Filesystem                           Size  Used Avail Use% Mounted on
            <snip>
            /dev/mapper/vgraid-lvapache           63G   54M   60G   1% /etc/apache2
            <snip>
            

            为了解决这个问题,我只是将以下内容放在 root 用户的 shell 中(因为他们是唯一需要查看 etckeeper 修订的人:

            export GIT_DISCOVERY_ACROSS_FILESYSTEM=1
            

            一切都很好……非常快乐。

            更多注释:

            -->  UBIk  <--:root@ns1:[/etc]
            --PRODUCTION--(16:48:54)--> export GIT_DISCOVERY_ACROSS_FILESYSTEM=0
            
            -->  UBIk  <--:root@ns1:[/etc]
            --PRODUCTION--(16:57:35)--> git status
            On branch master
            nothing to commit, working tree clean
            
            -->  UBIk  <--:root@ns1:[/etc]
            --PRODUCTION--(16:57:40)--> touch apache2/me
            
            -->  UBIk  <--:root@ns1:[/etc]
            --PRODUCTION--(16:57:45)--> git status
            On branch master
            Untracked files:
              (use "git add <file>..." to include in what will be committed)
            
                apache2/me
            
            nothing added to commit but untracked files present (use "git add" to track)
            
            -->  UBIk  <--:root@ns1:[/etc]
            --PRODUCTION--(16:57:47)--> cd apache2
            
            -->  UBIk  <--:root@ns1:[/etc/apache2]
            --PRODUCTION--(16:57:50)--> git status
            fatal: Not a git repository (or any parent up to mount point /etc/apache2)
            Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
            -->  UBIk  <--:root@ns1:[/etc/apache2]
            --PRODUCTION--(16:57:52)--> export GIT_DISCOVERY_ACROSS_FILESYSTEM=1
            
            -->  UBIk  <--:root@ns1:[/etc/apache2]
            --PRODUCTION--(16:58:59)--> git status
            On branch master
            Untracked files:
              (use "git add <file>..." to include in what will be committed)
            
                me
            
            nothing added to commit but untracked files present (use "git add" to track)
            

            希望这会在某个地方帮助某人... -wc

            【讨论】:

              【解决方案7】:

              为了完成接受的答案, 有同样的问题。 先指定遥控器

              git remote add origin https://github.com/XXXX/YYY.git
              
              git fetch 
              

              然后获取代码

              git pull origin master
              

              【讨论】:

                【解决方案8】:

                对于带有 repo 的 android 源代码,我相信你应该使用 REPO。如果你真的想使用 git,你应该知道项目是否有 .git 目录和 ls -a。或者您必须进入应包含 .git 的子项目目录。

                【讨论】:

                  【解决方案9】:

                  只需在命令行中输入git init 并按回车键。然后再次运行你的命令,你可能正在运行git remote add origin [your-repository]

                  应该有效,如果无效,请告诉我。

                  【讨论】:

                  • 但是请注意,在上面的疯狂场景中,需要 --force 参数来重新对齐本地项目和相应的远程分支。我能够通过以下方式安全地做到这一点:1)为 localRepo3 的本地版本创建一个分支(在 git init 之后):git checkout -b local_version;然后 2) 将分支设置为跟踪原点(您的命令:git remote add origin [your-repository]);然后 3) git checkout remote_branch --force;然后 4) 将 local_version 分支合并到 remote_branch。但是 git remote add origin [your-repository] 仍然是这里的英雄 :)
                  • GIT_DISCOVERY_ACROSS_FILESYSTEM 未设置 - 在 heroku 上。?你能指导我吗
                  • 如果由于某种原因 .git/index 或 .git/HEAD 文件不能由您自己写入,您将收到相同的错误。把它们还给你,问题就消失了。
                  猜你喜欢
                  • 1970-01-01
                  • 2017-03-08
                  • 2016-05-01
                  • 2016-07-11
                  • 2013-02-09
                  • 1970-01-01
                  • 2018-06-25
                  • 2016-07-31
                  • 1970-01-01
                  相关资源
                  最近更新 更多