git - 我无法在 Git 中将父目录添加到 *safe.directory*

标签 git cve-2022-24765

将 Git 更新为 v2.35.2.windows.1 后我收到以下错误:

fatal: unsafe repository ('F:/GitHub/my-project' is owned by someone else)
To add an exception for this directory, call:

git config --global --add safe.directory F:/GitHub/my-project


我尝试将我的项目的父目录添加到 .gitconfig ,但它不起作用。
[safe]
    directory = F:/GitHub/
    directory = F:/Private/
  • 有解决方法吗?
  • “'x'归他人所有”实际上是什么意思?

  • 我不想将我正在处理的每个项目都添加到 .gitconfig文件。

    最佳答案

    回答
    这似乎与此漏洞公告有关:
    https://github.blog/2022-04-12-git-security-vulnerability-announced/
    我认为这与您的电子邮件关系不大,而与文件系统上目录的所有者关系更大。
    您当前登录的用户是否也是该文件夹的所有者?
    父文件夹呢?
    另外,您是从存储库目录中调用 git 吗?
    更新只有几个小时,所以我猜事情还在不断变化。
    现在,正如来自 git 的消息所示,执行

    git config --global --add safe.directory F:/GitHub/my-project
    
    并确保您调用 git来自F:/GitHub/my-project目前。
    编辑 :正如我们在下面的评论中发现的那样,包含 .git 的目录的父目录的所有者文件夹(git 存储库)是问题所在。
    重新克隆项目是一种独立于平台的方式,可确保您是所有者。
    边注
    我在 Linux 上使用 Flutter 时遇到了同样的问题,我的发行版安装在 /opt/flutter 中。 .我不是以root身份工作,因此遇到了同样的问题。
    运行git config --global --add safe.directory /opt/flutter确实为我解决了这个问题。
    更长的编辑:澄清
    经过一夜好眠后再次浏览有关该漏洞的帖子,我认为需要进行一些澄清。我将保留其余的答案。
    让我们看一下以下简单的目录结构。
    /home/
    ├─ tommy/
    │  ├─ .git/
    │  ├─ rental_space/
    │  │  ├─ mary/
    │  │  │  ├─ projects/
    │  │  │  │  ├─ phone_app/
    │  │  │  │  │  ├─ .git/
    │  │  ├─ anthony/
    
    在这种情况下,用户 tommy/home 下拥有自己的目录,但(出于某种原因)将空间出租给其他用户,在本例中为 maryanthony .
    如果 mary ,错误地在哪里执行git在她的目录中,但在她之外 phone_app项目,然后是旧的git将在目录树上搜索 .git存储库。它找到的第一个是来自 /home/tommy/.git 的那个。 .这是一个安全风险,因为另一个用户,在这种情况下是任何可以充当 tommy 的用户。 , 会影响 mary的执行 git 并可能导致麻烦。
    从 Git v2.35.2 起,只要输入的目录属于 mary 以外的用户,遍历就会停止。 .说mary执行git/home/tommy/rental_space/mary/projects , 然后 git 将 checkin projects , 但找不到 .git .它将上升一个目录, checkin mary ,但再次找不到 .git .然后它会再次上涨,但是rental_space属于 tommy ,而不是 mary .新的 git 版本将在此处停止并打印我们在问题中看到的消息。
    添加目录/home/tommy/rental_spacesafe.directory变量将允许 git 继续,但正如解释的那样,存在安全风险。
    我在这里使用了类似 Linux 的目录目录结构,但在 Windows 上也是如此。

    关于git - 我无法在 Git 中将父目录添加到 *safe.directory*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71934185/

    相关文章:

    git 推送到 GitHub 存储库分支给出错误 "src refspec master does not match any"

    mysql - Git + 数据库自动生成脚本

    git - 如何在团队中使用 git tfs

    git - 了解警告 "LF will be replaced by CRLF"

    git diff - 外部查看器 - 获取所有差异结果

    bash - 如何在 git safe.directory 上递归添加目录?