git 拉取对于太长的文件名不起作用

git pull does not work for too long file name

我在 Windows 上提交了(使用 Git)并推送(到 GitHub)2 个名称有点长的 pdf 文件[= =18=] 机器,然后尝试将它们拉到我的 Linux Mint 机器上,但出现此错误:

Updating 1453916..ffdfabc
error: cannot stat 'long-file-name-1.pdf': File name too long
error: cannot stat 'long-file-name-2.pdf': File name too long

如何在我的 Linux 机器上拥有这 2 个文件而不丢失 and/or 文件的名称?

如果您没有按照@phd 的建议使用加密家庭,那么您很可能会遇到 Git.[=14= 中不存在的 Linux 限制]

大多数 Linux 内核是用 NAME_MAX=255 编译的(参见 here)。这意味着文件名不能超过 255 个字节。如果您使用的是非 ASCII Unicode 字符,则字符数甚至少于 255 个。

在 Windows 中,限制大于 255 字节,这就是为什么您能够在 Windows.

中创建这些文件的原因

如果你想让它在 Linux 上工作,你需要在 Windows 中将它们重命名为 255 字节(字节,不是字符!)或更少。

如果您打算检查这些修订,您需要做一些 history rewrite

有很多更疯狂的选择,比如用不同的 NAME_MAX 重新编译内核,如果不是绝对必要,请不要去那里。