Git 错误检测到可疑的所有权,需要每次添加 safe.directory

问题描述 投票:0回答:1

我使用命令在 git 中多次更改了我的 user.name :

git config --global user.name myname
但我用不同的名称多次输入此命令,现在它显示错误

fatal: detected dubious ownership in repository at '/storage/emulated/0/dev/git/C9-hp/test-/test'
To add an exception for this directory, call:
git config --global --add safe.directory 
        /storage/emulated/0/dev/git/C9-hp/test-/test

在我之前使用的一些存储库中

git config --global --add safe.directory 
正如它所说。但我试图找到真正的答案,而不仅仅是使用该命令解决现在的问题,所以我从 ChatGPT 询问它。我不知道它是否理解我的问题,但这就是它给我的:

sudo chown -R yourusername:yourusergroup /storage/emulated/0/dev/git/c9-hp/test-/test
  498  chown -R yourusername:yourusergroup /storage/emulated/0/dev/git/c9-hp/test-/test
  499  chown -R C9hp:C9hp /storage/emulated/0/dev/git/c9-hp/test-/test

但是我的 Android 手机应该是 root 的,因为我正在使用 Termux。有什么办法可以为我未来的所有存储库一次性解决这个问题吗?

编辑: 它包含什么? 我现在刚刚学习 git,这是为了测试,所以现在有 2 个文本文件和 1 个空目录。 我的本地 git 存储库位于内部存储上,我的 Android 手机是小米红米 10 128GB,4GB RAM。

git termux
1个回答
2
投票

您可以使用

*
完全选择退出安全检查。反正在Android系统上就有点没用了。

git config --global safe.directory '*'

这是来自

git help config

的相关文档

安全目录

这些配置条目指定了 Git 跟踪的目录,即使它们由当前用户以外的其他人拥有,也被认为是安全的。默认情况下,Git 甚至会拒绝解析其他人拥有的存储库的 Git 配置,更不用说运行它的钩子了,并且此配置设置允许用户指定例外情况,例如对于有意共享的存储库(请参阅 git-init(1) 中的

--shared
选项)。

这是一项多值设置,即您可以通过

git config --add
添加多个目录。要重置安全目录列表(例如,覆盖系统配置中指定的任何此类目录),请添加具有空值的
safe.directory
条目。

此配置设置仅在受保护的配置中受到尊重(请参阅“范围”部分)。这可以防止不受信任的存储库篡改该值。

此设置的值是插值的,即

~/<path>
扩展为相对于主目录的路径,而
%(prefix)/<path>
扩展为相对于 Git 的(运行时)前缀的路径。

要完全选择退出此安全检查,请将 safe.directory 设置为字符串

*
。这将允许所有存储库被视为它们的目录已在
safe.directory
列表中列出。如果在系统配置中设置了
safe.directory=*
并且您想要重新启用此保护,请在列出您认为安全的存储库之前使用空值初始化您的列表。

如上所述,默认情况下,Git 只允许您访问自己(即运行 Git 的用户)拥有的存储库。然而,当 Git 在提供 sudo 的非 Windows 平台中以 root 身份运行时,git 会检查 sudo 创建的

SUDO_UID
环境变量,并且除了来自 root 的 id 之外,还允许访问记录为其值的 uid。这是为了在安装“make && sudo make install”期间轻松执行通用序列。在 sudo 下运行的 git 进程以 root 身份运行,但 sudo 命令会导出环境变量以记录原始用户拥有的 id。如果这不是您所希望的,并且希望 git 仅信任 root 拥有的存储库,那么您可以在调用 git 之前从 root 的环境中删除
SUDO_UID
变量。

© www.soinside.com 2019 - 2024. All rights reserved.