我正在运行 Ubuntu 18.04,作为 Windows 的子系统。我在多台 PC 上都这样做过,从来没有遇到过这个问题。我尝试这样做git clone <repo>
,结果如下:
Cloning into '<repo>'...
error: chmod on /mnt/c/Users/Efsta/Code/<repo>/.git/config.lock failed: Operation not permitted
fatal: could not set 'core.filemode' to 'false'
我尝试了以下操作:
❯ git config core.fileMode false
,结果如下fatal: not in a git directory
❯ git config --global core.filemode false
❯ git config --add --global core.filemode false
似乎什么都不起作用。我已经在这里尝试了几个答案,但 WSL 似乎有点棘手。有人知道如何解决这个问题吗?
我也尝试了这个问题中的所有方法:https://stackoverflow.com/questions/1580596/how-do-i-make-git-ignore-file-mode-chmod-changes,似乎什么都不起作用。
答案1
我也遇到了同样的问题。试试这个:
sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o metadata
将驱动器号更改为您遇到问题的任何驱动器号。
答案2
您可以使用元数据选项在 WSL 下自动挂载 Windows 驱动器,该选项允许 git 等应用程序使用 chmod 并修复此问题。
编辑/etc/wsl.conf
(如果不存在则创建)。添加以下内容:
[automount]
options = "metadata"
然后:
- 重新启动 Windows
- 退出所有 WSL 会话,
wsl --shutdown
从 PowerShell 或 CMD 运行,然后重新启动 WSL - 退出你唯一的会话,用 终止它
wsl --terminate <distroName>
,然后重新启动它,
以后就再也不用担心了。
答案3
/mnt/c/Users/...
位于 Windows NTFS 分区本身,而不是 WSLext4
格式化系统内。因此,您必须将其视为实际 Ubuntu 安装中的 USB 记忆棒上的 NTFS 分区,并接受 NTFS 的限制。
NTFS 分区不支持chmod
或类似的Linux权限命令,并且与实际的 Ubuntu 安装不同,后者不会出现错误但不会进行任何权限更改,WSL 不会将此信息传回给您,它只是像您在此处看到的那样出现错误。
由于 Linux 权限架构无法正常工作,您无法在 WSL 中对空间进行git clone
合理操作。这是 WSL 当前形式的限制。/mnt/c/...
chmod
答案4
我遇到了同样的问题。我的解决方案是在默认 WSL 位置 git clone 我的存储库(有效),然后使用 Visual Studio Code 远程访问我的 WSL 存储库。这样你就根本不需要使用 /mnt/c 了。