Xav*_*ero 136 git fatal-error git-bash windows-subsystem-for-linux
过去几年我在这种情况下使用了 git:
git-bash我可以通过这样的方式访问 Linux 中的文件(通过//wsl$/共享):
或者在 WSL bash 终端中本地:
这些访问都进入同一个目录。
现在,如果我git status在 Windows 端的存储库中执行此操作,则会出现错误fatal: detected dubious ownership in repository at:
而在 WSL-Linux 中则不然,对于同一目录:
以前没有发生过这种情况。我已经使用这个设置很多年了。这件事从两天前开始发生。
事实上,我git-bash两天前安装了一个新版本,我怀疑 bash 环境可能会影响这个。
我使用了大约 100 个存储库,并且发现我尝试过的所有存储库都失败了(大约 10 个存储库)。预计这 100 个存储库也会发生这种情况。
那些以前工作但现在失败的存储库都没有被触及,因此用户和权限都没有改变。
因此,从“好”到“坏”的转变不是在文件系统方面,而是在 git-bash 方面。
我不想只是将其列入白名单safe.directory。我想了解幕后发生的事情。为什么它发生在今天而不是三天前。我想知道“git 期望什么”并看看如何纠正它。
用户似乎是正确的。从linux端:
从 Windows 端来看,它还与硬盘和id:
我怎样才能告诉所有权人期望git它不会抱怨?
phi*_*ilb 124
事实上,我两天前安装了较新版本的 git-bash,我怀疑 bash 环境可能会调节这一点。
我了解到您安装了适用于 Windows 的新版 Git,其中包括 Git Bash。从 2.35.2 和 2.36 开始,较新版本的 Git(包括 Windows 版 Git)对目录所有权更加严格:https://github.blog/2022-04-18-highlights-from-git-2-36/#stricter -存储库所有权检查。
当您git从 Git Bash 中使用时,即使您 cd进行了//wsl$/挂载,您也使用了 Windows 程序。Windows 版 Git 没有任何特殊代码来处理 WSL 挂载的权限,因此这就是您收到错误的原因。如果不修改 Git 源代码,就无法解决这个问题。
另一种方法是在 Git Bash 中使用wsl gitwhile git,然后使用 Linux 可执行文件。
或者,正如您所写,git config --global safe.directory '*'如果您不认为自己面临风险,则可以绕过该安全功能。
[编者注:如果您使用的是 Windows 命令提示符,请勿在星号后添加单引号,即 . git config --global safe.directory *]
Sha*_*WKL 22
由于 SSD 升级以及旧驱动器上的所有 Git Repos,我在重新安装 Windows 后突然遇到了这个问题。
递归获取所有权解决了这一切:
更新:按照 OP 的要求提供屏幕截图(抱歉正在出差,刚刚回到家)
输入您的用户名并单击“检查名称”。注意,Windows 用户名默认是您的“用户名”减去最后一个字符。例如。约翰尼就是约翰。Checkname 将确保您的计算机名称也被输入,并确保您获得正确的用户名

不确定这是否适用于所有使用 Windows 时遇到此错误的人。
我以管理员身份运行Git Bash,并且在执行“git status”时不再显示错误。
我最初可能是在以管理员身份运行 Git Bash 时创建的存储库。不幸的是我不记得了。
祝你好运
小智 6
实际的问题是,当您在任何特定 git 存储库中运行任何命令时,它会检查发行者 ID 和存储库文件的所有权,如果 git 发现任何冲突,那么您可能会收到如下错误:
fatal: detected dubious ownership in repository at '/some/path'
Run Code Online (Sandbox Code Playgroud)
解决方案是将存储库文件的所有权更改为运行 git 命令的 bash 用户的所有权,或者,如果您了解特定存储库中的文件的所有权和组名称是正确的,则可以运行:
git config --global --add safe.directory /some/path
Run Code Online (Sandbox Code Playgroud)
这将安全地解决问题。完毕。