Linux 工作站上安装新硬盘后,重新下载项目代码,在项目中的文件夹执行 git submodule update --init --recursive 报错:fatal: detected dubious ownership in repository at '/media/data/users/cjavapy/serialize' To add an exception for this directory, call: git config --global --add safe.directory /media/data/users/cjavapy/serialize,本文主要介绍一下解决这个git 报错异常的方法。

1、添加safe.directory

关闭所有与safe.directory系统相关的警告。

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

该命令会在全局的.gitconfig文件中添加如下配置:

[safe]
    directory = *

Windows的终端中如执行失败,则可以尝试:

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

2、修改项目文件的用户

chown -R <current_user> <repo_folder>

3、修改Windows目录的权限

takeown /F <dir/*> /R

说明:

/F参数为文件,带*通配符将适用于所有文件和文件夹;

/R参数表示递归,它将当前登录用户的所有者应用于所有文件和子文件夹

<dir/*>是要拥有所有权的目录。

4、当前用户非git用户

确保使用的是正确的终端用户。可能使用 root 用户会引起问题。更改回git用户,su git-user就没有问题。

5、修改目录权限

修改目录权限,执行下面命令:

sudo chown -v "$( id -u; ):$( id -g; )" .;
sudo chown -v "$( id -u; ):$( id -g; )" -R .git;
find '.git' -type d -exec chmod -v 775 {} \;;
find '.git/objects' -type f -exec chmod -v 444 {} \;;
find '.git/hooks' -mindepth 1 -maxdepth 1 -type f -exec chmod -v 775 {} \;;
find '.git' -type f ! -path '.git/objects/*' ! -path '.git/hooks/*' -exec chmod -v 664 {} \;;

推荐文档