git checkout-index:无法创建文件(文件名太长)

14

我检出我的仓库,但是有一个文件名太长了:

~/git$ git clone git+ssh://server/git/ma.git
Initialized empty Git repository in ~/git/ma/.git/
remote: Counting objects: 1855, done.
remote: Compressing objects: 100% (1594/1594), done.
remote: Total 1855 (delta 656), reused 1078 (delta 222)
Receiving objects: 100% (1855/1855), 54.14 MiB | 701 KiB/s, done.
Resolving deltas: 100% (656/656), done.
error: git checkout-index: unable to create file four_folder/$VERYLONGNAME.pdf (File name too long)

$VERYLONGNAME 长约160个字符。我的文件系统是Ubuntu 10.10上的ext4。

有人可以帮我查看这个长文件吗?


文件名中有空格吗? - yasouser
2个回答

23

谢谢,我会禁用主目录加密。 - Strubbl
将代码库从加密磁盘中移动在我的情况下得到了帮助,谢谢。 - KhaimovMR

9
如果您正在使用Ubuntu的加密家目录功能,请尝试将其检出到不在您的家目录下的目录中;否则,ecryptfs可能会导致底层文件系统中的文件名变长。否则,您可以按照以下步骤获取数据:
首先,导航到包含目录,然后键入“git ls-files --stage”。您应该会看到以下形式的一堆输出:
100644 16890852350cb62bb9f9aec5e52eea8ba46f1192 0       somefile

找到与您感兴趣的文件对应的哈希值。现在执行以下操作:

git cat-file blob 16890852350cb62bb9f9aec5e52eea8ba46f1192 > shortername.pdf

在这里,shortername.pdf是文件的新名称,用上面找到的哈希值替换原有的哈希值。这将提取该文件的内容。

现在只需要执行以下操作:

git add shortername.pdf
git rm --cached $VERYLONGNAME.pdf
git commit

这将有效地将过长的PDF文件重命名为更合理的名称。


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