如何在WSL中进行Git克隆?

10

我尝试在全新的Windows安装中使用wsl(Ubuntu 20.04)克隆一个仓库。我的操作步骤是:生成SSH密钥并将公钥添加到github和framagit。但是仍然无法克隆成功。

ssh -i -T git@github.com

And

ssh -i -T git@framagit.org

他们俩都说了“你好我的伪装身份,你已经通过验证”。
但是当我尝试克隆时,出现以下情况: 没有sudo权限:
Cloning into 'testaaa'...
error: chmod on /mnt/d/dev/dev/testaaa/.git/config.lock failed: Operation not permitted
fatal: could not set 'core.filemode' to 'false'

使用sudo:

Cloning into 'testaaa'...
ssh: connect to host framagit.org port 22: Network is unreachable
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

我应该怎么做解决我的问题?

2个回答

8
您可以通过遵循此指南来解决此问题。以下是摘要:
从WSL提示符中:
sudo vim /etc/wsl.conf

添加以下内容:

[automount]
options = "metadata"

保存文件,从PowerShell提示符关闭wsl:

wsl --shutdown

重新打开wsl终端。现在您应该看到文件属于您的用户,而不是root。您现在可以使用git clone、chmod、chown等命令。

4
在这里你不需要使用sudo,一般情况下,在Git中没有必要使用它,除非你使用的存储库是由root特定拥有的。
你看到的问题是,你正在使用期望工作的标准Unix权限的Linux Git,在不支持它们的文件系统(NTFS)上。当Git重新编写锁定文件并将其重命名为配置文件放置时,Git将尝试适当设置权限,但它无法这样做并失败了。Git for Windows没有这个问题,因为它将这些权限与WSL不同地映射,WSL只会始终返回一个错误。
你可以尝试以下几种方法:
  • 在WSL下克隆存储库,不使用Windows驱动器。这是保证可以工作的,并且应该没问题。
  • 在WSL的某个位置克隆存储库,并将其移动到Windows驱动器中,手动为Windows设置配置选项或在克隆后再次尝试git init
  • 在Windows驱动器上运行git init,然后执行git remote add origin YOUR-REMOTEgit pull origin master(或任何您的分支名称)。
由于git init可能会失败,最后一个方法可能不比现在更好。

我能够使用WSL将git克隆到共享的NTFS文件系统中。 - Danilo Souza Morães
微软可能已经修复了他们的实现,以至于 chmod 不再存在问题。或者在 WSL 1 和 2 下它的行为可能不同。无论哪种情况,答案都是相同的:在 OP 的情况下,文件系统不支持 chmod 并返回错误,而 Git 失败。 - bk2204

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接