我正在尝试让 Git 在我的系统上运行,但我总是收到错误消息
error: insufficient permission for adding an object to repository database ....../.git/objects
我正在使用 Ubuntu 开发适用于 Linux 的 Windows 子系统中的 Surface Pro 5。如果我在内部驱动器上工作,一切正常。当我想在我的微型 SD 卡上工作时,问题就开始了。首先它不是自动挂载的。我通过编辑/etc/fstab
文件解决了这个问题:
E: /mnt/e drvfs defaults,metadata,rw,exec,uid=nico,gid=nico 0 0
并ls -alR
显示所有用户和所有文件的权限都应为 rw。
我尝试git add
了此 SD 卡上的现有存储库,但它不起作用。不知何故,它在 '.git/objects/54/' 中创建了一个 tmp 文件,每次我尝试它时都没有写权限。
然后我尝试克隆一个测试存储库,但它为 splitsec 创建了文件夹并给了我同样的错误。它可以在我的普通驱动器 C: 上工作,但不能在我的 SD 卡上工作。
nico@DESKTOP-639MEJ9:/mnt/e$ git clone https://github.com/NicoJG/TestGit.git
Cloning into 'TestGit'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
error: insufficient permission for adding an object to repository database /mnt/e/TestGit/.git/objects
fatal: failed to write object
fatal: unpack-objects failed
nico@DESKTOP-639MEJ9:/mnt/e$ sudo git clone https://github.com/NicoJG/TestGit.git
[sudo] password for nico:
Cloning into 'TestGit'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
error: insufficient permission for adding an object to repository database /mnt/e/TestGit/.git/objects
fatal: failed to write object
fatal: unpack-objects failed
nico@DESKTOP-639MEJ9:/mnt/e$
不知何故,git 无法使用 WSL 中的权限正常工作。我已经尝试过:
sudo chmod -R ug+rw *
sudo chwn -R nico:nico *
有谁知道如何解决它?
编辑:根据 bk2204 的要求,这里是输出mount
:
nico@DESKTOP-639MEJ9:/mnt/e$ mount
rootfs on / type lxfs (rw,noatime)
none on /dev type tmpfs (rw,noatime,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
devpts on /dev/pts type devpts (rw,nosuid,noexec,noatime,gid=5,mode=620)
none on /run type tmpfs (rw,nosuid,noexec,noatime,mode=755)
none on /run/lock type tmpfs (rw,nosuid,nodev,noexec,noatime)
none on /run/shm type tmpfs (rw,nosuid,nodev,noatime)
none on /run/user type tmpfs (rw,nosuid,nodev,noexec,noatime,mode=755)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
cgroup on /sys/fs/cgroup type tmpfs (rw,relatime,mode=755)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,relatime,devices)
E: on /mnt/e type drvfs (rw,relatime,uid=1000,gid=1000,case=off)
C:\ on /windir/c type drvfs (rw,noatime,uid=1000,gid=1000,umask=22,fmask=11,metadata,case=off)
我只知道 C:(我的主驱动器)和 E:(我的 SD 卡)是什么。我认为其余的似乎是特定于 WSL 的。