将 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/
我不想将我正在处理的每个项目都添加到
.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
下拥有自己的目录,但(出于某种原因)将空间出租给其他用户,在本例中为 mary
和 anthony
.如果
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_space
到safe.directory
变量将允许 git 继续,但正如解释的那样,存在安全风险。我在这里使用了类似 Linux 的目录目录结构,但在 Windows 上也是如此。
关于git - 我无法在 Git 中将父目录添加到 *safe.directory*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71934185/