Git子模块更新失败,错误为“FATAL:在以下位置的存储库中检测到可疑所有权”

v1uwarro  于 2022-09-21  发布在  Git
关注(0)|答案(8)|浏览(1409)

我在我的Linux工作站上安装了一个新的硬盘。它看起来工作得很好。我想在新的磁盘上下载一些回购。所以我执行git clone XXX,它工作得很好。但当我CD在文件夹中,并执行git submodule update --init --recursive。失败的原因是

fatal: detected dubious ownership in repository at '/media/data/users/jhu3szh/serialize'
To add an exception for this directory, call:

git config --global --add safe.directory /media/data/users/jhu3szh/serialize

我想这可能只是一个轻微的警告,所以我只执行了git config --global --add safe.directory /media/data/users/jhu3szh/serialize。然而,当我再次执行git子模块时,出现了更多类似的错误。REPO中有很多子模块。

有人能给我解释一下发生了什么事吗?我在谷歌上搜索了错误信息,但几乎找不到有用的信息。先谢谢你。

lstz6jyr

lstz6jyr1#

静音所有safe.directory警告

tl;DR

关闭所有与git的safe.directory系统相关的警告。一定要明白你在做什么。

git config --global --add safe.directory '*'

长版

改编自I cannot add the parent directory to safe.directory in Git的这篇文章。

我遇到了同样的问题,并通过禁用安全目录检查来解决它,这将结束所有的“不安全存储库”错误。

这可以通过运行以下命令1来完成:

git config --global --add safe.directory '*'

这会将以下设置添加到您的全局.gitconfig文件:

[safe]
    directory = *

关闭前,请确保您了解此安全措施,并why it exists。如果您的存储库存储在共享驱动器上,则不应执行此操作

但是,如果您100%是您的计算机的唯一用户,您的存储库存储在本地,那么从理论上讲,禁用此检查不会增加风险。

还要注意的是,您目前不能将其与文件路径组合在一起,这在我的例子中可能是相关的。该命令不会将通配符*解释为每个操作符-它只接受"*"参数表示“禁用安全存储库检查/认为所有存储库都是安全的”。

1-如果在Windows的特定终端程序中失败,请尝试使用双引号将通配符引起来,而不是使用单引号(通过this GitHub issue):

git config --global --add safe.directory "*"

4c8rllxm

4c8rllxm2#

我得到了相同的问题,并通过将所有者更改为目录修复。请尝试Chown-R<Current_User><repo_Folders>

yhived7q

yhived7q3#

如果NTFS/Windows上出现同样的问题,请确保.git和.git文件夹的父文件夹的所有者与运行git的用户完全相同。

仅相同的组(管理员)或.git的唯一父级可能不起作用。

更新:可以通过右击文件夹→属性→安全选项卡→高级(窗口右下角)→所有者来编辑权限。
可能需要禁用继承,在同一窗口中完成。This q/a有提示。

运行GIT的用户可以在资源监视器中选中:任务管理器→Performance→打开资源监视器(在底部)。可能需要启用隐藏的“用户名”列。

mrphzbgm

mrphzbgm4#

在磁盘上创建一个新目录,其中您的当前用户是此新目录的所有者。在这个新目录中,克隆您的git存储库。

ql3eal8s

ql3eal8s5#

请确保您使用的是正确的终端用户。对我来说,我临时更改为根用户,这可能会导致问题。已更改回具有su git-user的标准用户,错误消失。

jvlzgdj9

jvlzgdj96#

我遇到了供应商文件夹中的库的问题。我刚刚删除了库的文件夹并重新安装。

r9f1avp5

r9f1avp57#

当从PHP执行git的命令时,我在Ubuntu/Lemp上收到了相同的错误消息。以上任何建议都无助于解决问题。

**解决方案:**需要设置正确的隐藏‘.git’文件夹所有者。

在我的例子中,git comands是由‘www-data’用户(Web服务器用户)执行的:

sudo chown www-data:<current_user> -R .git

要恢复从命令行使用git的能力,您需要允许组写入:

sudo chown g+w -R .git
m3eecexj

m3eecexj8#

只需使用sudo运行:sudo Git Status

相关问题