我在我的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中有很多子模块。
有人能给我解释一下发生了什么事吗?我在谷歌上搜索了错误信息,但几乎找不到有用的信息。先谢谢你。
8条答案
按热度按时间lstz6jyr1#
静音所有
safe.directory
警告tl;DR
关闭所有与git的
safe.directory
系统相关的警告。一定要明白你在做什么。长版
改编自I cannot add the parent directory to safe.directory in Git的这篇文章。
我遇到了同样的问题,并通过禁用安全目录检查来解决它,这将结束所有的“不安全存储库”错误。
这可以通过运行以下命令1来完成:
这会将以下设置添加到您的全局
.gitconfig
文件:关闭前,请确保您了解此安全措施,并why it exists。如果您的存储库存储在共享驱动器上,则不应执行此操作。
但是,如果您100%是您的计算机的唯一用户,和您的存储库存储在本地,那么从理论上讲,禁用此检查不会增加风险。
还要注意的是,您目前不能将其与文件路径组合在一起,这在我的例子中可能是相关的。该命令不会将通配符
*
解释为每个操作符-它只接受"*"
参数表示“禁用安全存储库检查/认为所有存储库都是安全的”。1-如果在Windows的特定终端程序中失败,请尝试使用双引号将通配符引起来,而不是使用单引号(通过this GitHub issue):
git config --global --add safe.directory "*"
4c8rllxm2#
我得到了相同的问题,并通过将所有者更改为目录修复。请尝试Chown-R<Current_User><repo_Folders>
yhived7q3#
如果NTFS/Windows上出现同样的问题,请确保.git和.git文件夹的父文件夹的所有者与运行git的用户完全相同。
仅相同的组(管理员)或.git的唯一父级可能不起作用。
更新:可以通过右击文件夹→属性→安全选项卡→高级(窗口右下角)→所有者来编辑权限。
可能需要禁用继承,在同一窗口中完成。This q/a有提示。
运行GIT的用户可以在资源监视器中选中:任务管理器→Performance→打开资源监视器(在底部)。可能需要启用隐藏的“用户名”列。
mrphzbgm4#
在磁盘上创建一个新目录,其中您的当前用户是此新目录的所有者。在这个新目录中,克隆您的git存储库。
ql3eal8s5#
请确保您使用的是正确的终端用户。对我来说,我临时更改为根用户,这可能会导致问题。已更改回具有
su git-user
的标准用户,错误消失。jvlzgdj96#
我遇到了供应商文件夹中的库的问题。我刚刚删除了库的文件夹并重新安装。
r9f1avp57#
当从PHP执行git的命令时,我在Ubuntu/Lemp上收到了相同的错误消息。以上任何建议都无助于解决问题。
**解决方案:**需要设置正确的隐藏‘.git’文件夹所有者。
在我的例子中,git comands是由‘www-data’用户(Web服务器用户)执行的:
要恢复从命令行使用git的能力,您需要允许组写入:
m3eecexj8#
只需使用sudo运行:sudo Git Status