# Git fatal: unsafe repository is owned by someone else
# 错误日志
To add an exception for this directory, call:
git config --global --add safe.directory F:/xxx
Git failed with a fatal error.
fatal: unsafe repository ('F:/xxx' is owned by someone else)
To add an exception for this directory, call:
git config --global --add safe.directory F:/xxx
# 解决方案
1、执行 git 命令,在 git 中把这个仓库设置为安全的仓库。
git config --global --add safe.directory F:/xxx
这个方法虽然可以解决问题,但是如果仓库很多,一个个加也不是个办法,太麻烦了。这个时候可以用方法2
2、从 Git v2.35.3 开始,可以使用 * 来表示所有仓库都是安全的。
git config --global --add safe.directory '*'
这个命令会在当前用户的
.gitconfig
文件下添加[safe] directory = *
# 原因分析
现在常用的操作系统都是多用户的,如果一个本地 git 仓库可以被多个用户共享,就会非常不安全,比如可能可以被其他人恶意提交、修改项目的东西等。
当我们项目的文件夹权限属于所有人,或者没有文件夹权限(为了方便,我们可能会把项目放到可移动设备 U 盘中)时就会触发这个 git 的警告。
补充:
这个跟 windows 系统下的 git 的一个漏洞有关,在根目录下创建
C:\.git\config
,会导致 git 读取根目录下的配置文件,如果攻击者使用此方式写入可执行命令,则 git 会执行。解决方法是升级到最新的 Git 版本:https://github.com/git-for-windows/git/releases (opens new window)
在命令行提示符中执行:
git --version
查看当前版本号C:\Users\pc>git --version git version 2.34.1.windows.1
只要版本号在 2.30.3 以后的,都会强制出现这个提示!
GitHub 仓库上可以看到具体哪次提交做了这个变更:https://github.com/git/git/commit/8959555cee7ec045958f9b6dd62e541affb7e7d9 (opens new window)
参考资料: