Why I am getting "error: invalid path '\'" after git pull or git clone?

Why I am getting "error: invalid path '\'" after git pull or git clone?

我无法从 GitLab 上的存储库中提取新更改,因为我收到以下错误:

Cloning into 'X'...
remote: Enumerating objects: 450, done.
remote: Counting objects: 100% (331/331), done.
remote: Compressing objects: 100% (215/215), done.
remote: Total 450 (delta 145), reused 280 (delta 108), pack-reused 119 eceiving objects: 100% (450/450), 20.83 MiB | 20.82 MiB/s
Receiving objects: 100% (450/450), 26.61 MiB | 20.89 MiB/s, done.
Resolving deltas: 100% (158/158), done.
error: invalid path '\'
fatal: unable to checkout working tree

根据 this question,我已尝试 git config core.protectNTFS false 但没有任何改变。然后我尝试 git config --system core.longpaths true 来获取有关该错误的更多信息,并发现了一些我认为是问题所在但我不知道如何修复它以及为什么会这样: 在分行主 您的分支是最新的'origin/main'。

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        deleted:    .gitignore
        deleted:    README.md
        deleted:    "\" <<<<<<<<<<<<<<<<<< this 

Git 而言,没有文件夹:文件只有文件名,其中可能嵌入了“/”字符。此类文件名只有一些限制:

  • 他们不能开始/
  • 他们不能有超过一个相邻的 /;
  • 他们不能结尾/;和
  • 它们不能包含 ASCII NUL 字符 (byte-code 0x00)。

留下很多文件名,例如 D:aux,它们在 Windows 上无效,但在 Linux 机器上有效。文件名 \ 就是这样一个文件名。

出于某种原因,您的存储库有一个提交,其中有一个名为 \ 的文件。 Linux 用户可以签出此提交并使用此文件,但像您这样的 Windows 用户不能。因此,当您的 Git 软件转到 提取 此特定提交时,提取文件 \ 的步骤失败。

你可以——而且可能应该——简单地删除这个文件,但你也应该找出它的创建者和原因,并阻止他们再次这样做。请注意,您仍将拥有该文件所在的提交;您将永远无法在 Windows 机器上正确检出该特定提交,但您可以在 Linux 机器(例如 Linux VM 运行 on 你的 Windows 系统,在 VirtualBox 或类似的系统中)。这意味着修复它的最简单方法是设置一个 Linux 系统,克隆存储库,检查该分支及其使用 \ 文件的提交,删除文件,添加、提交和推送.

(还有其他不涉及设置 Linux 系统的方法,但您应该使用 Linux-system 方法,因为手头有一个可以让您修复更多其他问题难题。)