我将 Git-1.9.0-preview20140217
用于 Windows。据我所知,此版本应该解决文件名过长的问题。但不适合我。
我肯定做错了什么:我做了git config core.longpaths true
和git add .
,然后是git commit
。一切顺利。但是当我现在执行 git status
时,我会得到一个带有 Filename too long
的文件列表,例如:
node_modules/grunt-contrib-imagemin/node_modules/pngquant-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/ test-handle-source-errors.js:文件名太长
重现对我来说非常简单:只需使用 Angular 生成器(“yo angular”)创建一个 Yeoman Web 应用程序,然后从 .gitignore
文件中删除 node_modules
。然后重复上述 Git 命令。
我在这里想念什么?
Git 的文件名限制为 4096 个字符,但在 Windows 上使用 msys 编译 Git 时除外。它使用旧版本的 Windows API,并且文件名限制为 260 个字符。
据我了解,这是 msys 的限制,而不是 Git 的限制。您可以在此处阅读详细信息:https://github.com/msysgit/git/pull/110
您可以通过在 Windows 上使用另一个 Git 客户端或将 core.longpaths
设置为 true
来规避此问题,如其他答案中所述。
git config --system core.longpaths true
Git 是作为脚本和编译代码的组合构建的。通过上述更改,某些脚本可能会失败。这就是默认情况下不启用 core.longpaths 的原因。
https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd#enable-long-paths-in-windows-10-version-1607-and-later 处的 Windows 文档包含更多信息:
从 Windows 10 版本 1607 开始,MAX_PATH 限制已从常见的 Win32 文件和目录函数中删除。但是,您必须选择加入新行为。注册表项允许您启用或禁用新的长路径行为。要启用长路径行为,请在 HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled 处设置注册表项(类型:REG_DWORD)
您应该能够运行命令
git config --system core.longpaths true
或者在您使用受支持的 Git 版本后,手动将其添加到您的一个 Git 配置文件中以打开此功能。看起来可能是 1.9.0 及更高版本。
这可能会有所帮助:
git config core.longpaths true
基本解释:此答案建议不要将此类设置应用于全局系统(应用于所有项目,因此避免 --system
或 --global
标签)配置。此命令仅通过特定于当前项目来解决问题。
编辑:
对于那些没有被授予全局更改 git 设置的人来说,这是一个与“权限被拒绝”问题相关的重要答案。
--system
将其应用于所有项目
遵循的步骤(Windows):
以管理员身份运行 Git Bash(右键单击应用快捷方式将显示以管理员身份运行的选项)运行以下命令:
git config --system core.longpaths true
注意:如果第 2 步不起作用或出现任何错误,您也可以尝试运行以下命令:
git config --global core.longpaths true
阅读有关 git config
here 的更多信息。
创建 .gitconfig 并添加
[core]
longpaths = true
您可以在项目位置(不确定)以及全局位置创建文件。在我的例子中,位置是 C:\Users\{name}\
。
git config --global core.longpaths true
C:\Users\{username}
中轻松找到 .gitconfig
文件并对其进行编辑。
为了完全确保它在存储库初始化后立即生效,但在获取远程历史记录或检出任何文件之前,以这种方式使用它更安全:
git clone -c core.longpaths=true <repo-url>
-c key=value 在新创建的仓库中设置一个配置变量;这在存储库初始化后立即生效,但在获取远程历史记录或签出任何文件之前。密钥的格式与 git-config1 预期的格式相同(例如,core.eol=true)。如果为同一个键提供多个值,则每个值都将写入配置文件。例如,这使得向源远程添加额外的 fetch refspecs 是安全的。
更好的解决方案是从 Git 启用 longpath 参数。
git config --system core.longpaths true
但是一个可行的解决方法是从 Git 中删除 node_modules 文件夹:
$ git rm -r --cached node_modules
$ vi .gitignore
在 .gitignore 文件内的新行中添加 node_modules。完成此操作后,推送您的修改:
$ git add .gitignore
$ git commit -m "node_modules removed"
$ git push
node_modules
:packages.lock
文件在此处可确保 npm install
安装的版本始终相同,直到您创建 npm update
执行 git config --system core.longpaths true
向我抛出了一个错误:
“错误:无法锁定配置文件 C:\Program Files (x86)\Git\mingw32/etc/gitconfig: Permission denied”
修复了在全局级别执行命令:
git config --global core.longpaths true
这对我有用
https://i.stack.imgur.com/YD4se.png
以管理员身份运行终端。并运行以下命令。
git config --system core.longpaths true
git config --global core.longpaths true
上面的命令对我有用。使用“--system”给了我配置文件未锁定错误
您也可以尝试启用长文件路径。
如果您运行 Windows 10 家庭版,您可以更改注册表以启用长路径。
转到 regedit
中的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
,然后将 LongPathsEnabled
设置为 1
。
如果您有 Windows 10 专业版或企业版,您还可以使用本地组策略。
在 gpedit.msc
中转到 计算机配置 → 管理模板 → 系统 → 文件系统,打开 Enable Win32长路径并将其设置为已启用。
从这里下载和安装 Git bash:https://git-scm.com/download/win
以管理员身份运行 git bash gui 并运行以下命令: git config --system core.longpaths true
现在克隆任何存储库。
如果问题未解决,请尝试以下命令: git config --global core.longpaths true
如果它没有帮助尝试重新启动 Windows。
TortoiseGit (Windows)
对于使用 TortoiseGit for Windows 的任何人,我都这样做了:
(1) 右键单击包含您的项目的文件夹。选择 TortoiseGit -> 设置。
(2) 在“Git”选项卡上,单击“Edit local .git/config”按钮。
(3)在弹出的文本文件中,在[core]部分下,添加:longpaths = true
https://i.stack.imgur.com/K71hv.png
我希望这可以最大限度地减少任何可能的系统范围问题,因为我们不是在编辑全局 .gitconfig 文件,而只是针对这个特定存储库的文件。
将存储库移动到驱动器的根目录(临时修复)
您可以尝试将本地存储库(整个文件夹)临时移动到驱动器的根目录或尽可能靠近根目录。
由于驱动器根目录的路径较小,因此有时可以解决问题。
在 Windows 上,我会将其移至 C:\
或其他驱动器的根目录。
在 Windows 中,您可以按照对我有用的这些步骤进行操作。
以管理员身份打开你的 cmd 或 git bash
从您以管理员身份运行的 cmd 或 git bash 提供以下命令
git config --system core.longpaths true
这将允许全局访问长路径现在您可以克隆存储库而不会出现长路径问题
我也有这个错误,但在我的情况下,原因是使用了一个过时的 npm 版本,v1.4.28。
更新到 npm v3,然后
rm -rf node_modules
npm -i
为我工作。 npm 问题 2697 包含 npm v3(2015 年 6 月 25 日发布)中包含的“最大平面”文件夹结构的详细信息。
在 Windows 机器中
以管理员身份运行命令提示符,然后运行以下命令
git config --system core.longpaths true
如果您正在使用加密分区,请考虑将文件夹移动到未加密分区(例如 /tmp),运行 git pull
,然后再移回。
core.longpaths
的原因。另请注意,Git for Windows 不是针对 MSYS 编译的。相反,它是一个带有精简 MSYS 环境的本机 Windows 应用程序。