【问题标题】:How to git clone in wsl?如何在wsl中进行git克隆?
【发布时间】:2020-09-26 09:53:09
【问题描述】:

我尝试使用 wsl (Ubuntu 20.04) 从全新的 Windows 安装中克隆 repo。 我所做的:生成 SSH 密钥并将公钥添加到 github 和 framagit。 试过了

ssh -i -T git@github.com

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.

我可以做些什么来解决我的问题?

【问题讨论】:

    标签: windows git windows-subsystem-for-linux


    【解决方案1】:

    您不想在此处使用sudo,并且通常没有理由在 Git 中使用它,除非您正在使用的存储库专门归 root 所有。

    您看到的问题是您在不支持它们的文件系统 (NTFS) 上使用 Linux Git,它需要标准的 Unix 权限才能工作。当它重写锁定文件时,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 文件系统中。
    • 微软可能已经修复了他们的实现,使得chmod 不再被破坏。或者它可能在 WSL 1 和 2 下表现不同。答案仍然相同:在 OP 的情况下,文件系统不支持 chmod 并返回错误,Git 失败。
    【解决方案2】:

    您可以通过关注此guide 来解决此问题。总结如下。

    从 WSL 提示符:

    sudo vim /etc/wsl.conf
    

    添加这些行:

    [automount]
    options = "metadata"
    

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

    wsl --shutdown
    

    重新打开一个 wsl 终端。您现在应该看到您的用户拥有的文件,而不是 root。您现在可以 git clone、chmod、chown 等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      相关资源
      最近更新 更多