因为之前电脑内存太少,搞个虚拟机就基本卡的不动了,所以换了一个电脑,重新拉取代码的时候出现了一个问题,一直拉取不下来

git clone xxx.git
报错信息:
fatal unable to checkout working tree filename too long

网上查找一番,解决问题如下:

Git has a limit of 4096 characters for a filename, except on Windows when Git is compiled with msys. It uses an older version of the Windows API and there's a limit of 260 characters for a filename.

意思就是:Git 的文件名限制为 4096 个字符,但在 Windows 上使用 msys 编译 Git 时除外。它使用旧版本的 Windows API,文件名限制为 260 个字符。

只需要执行命令

git config --system core.longpaths true

就可以解决

为什么Git在windows执行不默认执行这个命令呢,这样不就不会发生这种问题了?

Starting in Windows 10, version 1607, MAX_PATH limitations have been removed from common Win32 file and > directory functions. However, you must opt-in to the new behavior.

A registry key allows you to enable or disable the new long path behavior. To enable long path behavior > set the registry key at HKLMSYSTEMCurrentControlSetControlFileSystem LongPathsEnabled (Type: > > > > > REG_DWORD)

从 Windows 10 版本 1607 开始,MAX_PATH 限制已从常见的 Win32 文件和目录函数中删除。但是,您必须选择加入新行为。
注册表项允许您启用或禁用新的长路径行为。要启用长路径行为,请将注册表项设置为 HKLMSYSTEMCurrentControlSetControlFileSystem LongPathsEnabled(类型:REG_DWORD)

路径中 260 个字符的限制不是 MSYS 特有的,它是通用的 Windows API 模仿。这可以通过使用 Unicode 路径来解决,但这有其他缺点,这就是默认情况下不启用 core.longpaths 的原因。另请注意,Windows 版 Git 未针对 MSYS 进行编译。相反,它是带有精简 MSYS 环境的本机 Windows 应用程序。

Last modification:June 23, 2021
如果觉得我的文章对你有用,请随意赞赏