当前位置: 首页 > 知识库问答 >
问题:

我无法将父目录添加到*safe。Git中的目录*

於鸿羲
2023-03-14

将Git更新为v2之后。35.2.窗户。1我发现以下错误:

致命的:不安全的存储库('F:/GitHub/my-project'由其他人拥有)
要为该目录添加异常,请调用:

git config--global--addsafe.directoryF:/GitHub/my-project

我已尝试将项目的父目录添加到。gitconfig,但它不起作用。

[safe]
    directory = F:/GitHub/
    directory = F:/Private/
  • 有解决办法吗
  • “x”是别人所有的,这到底是什么意思

我不想把我正在做的每个项目都添加到中。gitconfig文件。

共有3个答案

郎永福
2023-03-14

我有时以管理员身份运行Visual Studio,有时以普通用户身份运行。这导致了问题。

症状1

在Visual Studio中,当打开本地文件夹时,代码似乎不再添加到源代码控制中。

在Visaul Studio 2019中打开一个解决方案:上述消息将出现在每个项目的Git输出窗口中。在VisualStudio2022中打开解决方案:它只是说发生了一个或多个错误

症状2

的父文件夹中打开普通命令提示符时。git执行git日志显示消息

fatal: unsafe repository ('C:/GIT/MyProject' is owned by someone else)
To add an exception for this directory, call:

    git config --global --add safe.directory C:/GIT/MyProject

在管理员命令提示符下执行任何命令时都不会出错。

解决方案

将MyProject文件夹的所有者更改为普通用户。之后,作为普通用户和管理员,一切正常。

凌琦
2023-03-14

正如derpda所说,它与已经修复的Git安全漏洞有关。

至少Linux,您可以通过确保Git存储库的父文件夹归您所有来解决这个问题。如果您可以适当地设置文件夹所有权,就不需要添加到safe.directory配置设置中。

如果您需要不同的所有权(例如,使用以不同用户身份运行的服务),请将文件夹添加到多值保险箱。目录配置设置:

git config--global--add safe。目录/路径/收件人/项目

谢诚
2023-03-14

这似乎与宣布的一个漏洞有关:https://github.blog/2022-04-12-git-security-vulnerability-announced/

我认为这与你的电子邮件关系不大,而与你文件系统上目录的所有者关系更大。你当前登录的用户也是文件夹的所有者吗?父文件夹怎么样?还有,你是否从存储库目录中调用git?更新才几个小时,所以我想事情还在变化中。

现在,正如git的消息所暗示的,执行

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

并确保您现在正在从F:/GitHub/my project中调用git

编辑:正如我们在下面的注释中发现的,问题在于包含. git文件夹(git存储库)的目录的父目录的所有者。

我在Linux上使用Flatter时遇到了同样的问题,而在我的发行版上,它安装在/opt/flatter中。我不是根用户,因此我遇到了同样的问题。运行git config--global--add safe。目录/opt/flatter确实为我解决了这个问题。

在睡了一个好觉之后,我再次浏览了这篇关于脆弱性的帖子,我认为有必要澄清一下。我将保留其余的答案
让我们看看下面的简单目录结构。

/home/
├─ tommy/
│  ├─ .git/
│  ├─ rental_space/
│  │  ├─ mary/
│  │  │  ├─ projects/
│  │  │  │  ├─ phone_app/
│  │  │  │  │  ├─ .git/
│  │  ├─ anthony/

在本例中,用户tommy/home下拥有自己的目录,但(出于某种原因)将空间出租给其他用户,在本例中是maryanthony
如果mary错误地在她的目录中执行git,但在她的phone_app项目之外,那么oldgit会在目录树上搜索。git存储库。它首先找到的是/home/tommy/中的一个。git。这是一个安全风险,因为另一个用户,在本例中,任何可以充当tommy的用户,都可能影响mary的git执行,并可能造成麻烦
来自Git v2。35.2及以后,一旦输入的目录属于mary以外的用户,遍历就会停止。在/home/tommy/rental\u space/mary/projects中说mary执行git,然后git将签入projects,但找不到。git。它将进入一个目录,签入mary,但再次找到no。git。然后它会再次上升,但是出租空间属于汤米,而不是玛丽。新的git版本将停在这里,打印我们在问题中看到的消息
将目录/home/tommy/rental_spacehtml" target="_blank">添加到保险箱。directory变量将允许git继续,但正如所解释的,这是一种安全风险。

我在这里使用了类似Linux的目录结构,但在Windows上也是如此。

 类似资料:
  • 将git更新为我发现以下错误: 我已尝试将项目的父目录添加到但它不起作用。 有解决办法吗 我不想将我正在处理的每个项目添加到文件中。 直到 和 是相同的 更新:在我的例子中,目录(很可能)是由我的Microsoft帐户在旧Windows安装中拥有的。 被接受的答案通过“修复”我的目录。这使得添加-不需要。

  • 根据这个QA,我们可以使用参数,用于添加要标记为白名单的目录,因为在git上找到了最新的CVE。但似乎没有办法递归地添加某些dir。 我有太多的存储库要添加,所以如果该功能存在,我想改用递归添加。存储库主要放在我在ubuntu上安装的NTFS磁盘上,所以里面的文件的所有者总是root用户。如果登录的用户与git目录的所有者不匹配,则最新更新会显示错误,例如

  • 问题内容: 我正在尝试从特定目录导入模块。 问题是,如果我使用附加路径然后打开python解释器,则该目录将添加到列表sys.path的末尾。如果我在打开python解释器之前导出变量,则目录将添加到列表的开头。在后一种情况下,我可以导入模块,而在前一种情况下,我不能。 有人可以解释为什么会发生这种情况,并给我一个 在 python脚本中将其添加到开始的解决方案吗? __ 问题答案: 如文档所述,

  • 我试图从一个特定的目录中导入一个模块。 问题是如果我使用<code>sys.path。append(moddirectory)要附加路径,然后打开python解释器,目录将添加到列表sys.path的末尾。如果我在打开python解释器之前导出变量,那么该目录将被添加到列表的开头。在后一种情况下,我可以导入模块,但在前一种情况中,我不能。 有人可以解释为什么会发生这种情况,并给我一个解决方案,在

  • 我正试图给我的maven项目添加依赖项,但我无法让它工作。 这是我的POM文件: 在构建项目时,我遇到以下错误: 未能在项目培训上执行目标解决方案:无法解析项目hva的依赖项。dmci。信息和通信技术。ads:TrainsSolution:jar:1.0-SNAPSHOT:未能收集[org.junit.jupiter:junit-jupiter:jar:5.4.0-M1(测试)]的依赖项:未能读取

  • 我正在尝试添加卡片视图,但当我使用此依赖项添加库时:我收到以下错误: 错误:任务“:app:processDebugManifest”的执行失败。清单合并失败:属性元数据#android。支持VERSION@value值=(26.0.0-alpha1)来自[com.android.support:appcompat-v7:26.0.0-alpha1]AndroidManifest。xml:27:9