【问题标题】:git pull does not work for too long file namegit pull 对文件名太长不起作用
【发布时间】:2020-03-26 13:47:38
【问题描述】:

我在我的 Windows 7 机器上做了一个提交(使用 Git)并推送(到 GitHub)2 个名称有点长的 pdf 文件,然后尝试将它们拉到我的 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 个文件而不丢失名称和/或文件?

【问题讨论】:

  • 这很奇怪。我希望 Linux 上的 git 比 git-for-windows 更好地处理非常长的文件名。
  • 顺便说一句,你用encrypted home吗?并且存储库位于$HOME以下某处?
  • 这些名字的长度是多少?
  • @phd,是的,我在我的 Linux Mint 上使用了加密的 home,并且 repo 位于 home 下方的目录中。文件名是:“设计分段聚氨酯的关键参数及其对形态和性能的影响-综合评论,Yılgör,2014.pdf”,包括 140 个字符,其中 2 个为非 ASCII Unicode 字符:“ı”和“ö "。

标签: git github push commit pull


【解决方案1】:

如果您没有按照@phd 的建议使用加密主页,那么您很可能会遇到 Git 中不存在的 Linux 限制。

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

在 Windows 中,限制大于 255 字节,这就是您能够在 Windows 中创建这些文件的原因。

如果您希望它在 Linux 上运行,您需要在 Windows 中将它们重命名为 255 字节(字节,而不是字符!)或更小。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 2016-09-13
    • 2014-04-29
    • 2019-05-06
    • 2018-06-29
    • 2013-08-29
    相关资源
    最近更新 更多