路径名太长的问题
鉴于 OP 已经尝试删除和重新添加文件但没有成功,可能的问题关键在于 Con.php
的完整路径已经达到了 Windows 的 260 字符限制。然而,当我尝试重现这个问题时,错误信息明确地说道 fatal: unable to stat 'very/long/path/name': Filename too long
所以我不确定那是否是问题所在。
要检查这是否是问题,请切换到包含 Con.php
的目录并执行以下操作:
pwd -W | wc -c
这将为您提供当前目录Windows路径中字符数量的计数。 如果计数不是>= 260,则这不是问题,我建议继续查看下面的调试其他问题
部分。 但是,如果计数>= 260,则请按以下步骤进行:
git config --system core.longpaths true
然后再尝试添加文件。
在下面看到实际效果,它创建了一条路径,其中包含>260个字符,并设置了上述选项以证明它可以解决问题。
$ git add 12345
fatal: unable to stat 'This/Is/A/Very/long/pathname/with/more/than/two/hundred/and/sixty/characters/This/Is/A/Very/long/pathname/with/more/than/two/hundred/and/sixty/characters/This/Is/A/Very/long/pathname/with/more/than/two/hundred/more/dir/12345': Filename too long
$ git config --system core.longpaths true
$ git add 12345
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: 12345
为什么这个配置不是默认的?
如果你有疑问,请阅读this:
Windows不支持超过260个字符的文件和目录。这适用于Windows资源管理器、cmd.exe和许多其他应用程序(包括许多IDE以及随Git for Windows提供的bash、perl和tcl)。
请注意以下警告:
使用此选项可能仍会导致脚本化的git命令失败,因此请自行承担风险。
调试其他问题
如果路径名不是问题,那么尝试执行以下命令(当然要将git add 12345
更改为git add app/CodeBehind/Con.php
),查看输出以获取线索(并将其添加到您的问题中以帮助其他读者找出问题):
$ set -x; GIT_TRACE=2 GIT_CURL_VERBOSE=2 GIT_TRACE_PERFORMANCE=2 GIT_TRACE_PACK_ACCESS=2 GIT_TRACE_PACKET=2 GIT_TRACE_PACKFILE=2 GIT_TRACE_SETUP=2 GIT_TRACE_SHALLOW=2 git add 12345; set +x;
+ GIT_TRACE=2
+ GIT_CURL_VERBOSE=2
+ GIT_TRACE_PERFORMANCE=2
+ GIT_TRACE_PACK_ACCESS=2
+ GIT_TRACE_PACKET=2
+ GIT_TRACE_PACKFILE=2
+ GIT_TRACE_SETUP=2
+ GIT_TRACE_SHALLOW=2
+ git add 12345
16:06:04.269773 trace.c:333 setup: git_dir: .git
16:06:04.269773 trace.c:334 setup: git_common_dir: .git
16:06:04.269773 trace.c:335 setup: worktree: C:/Users/az/test-long-path-problems
16:06:04.269773 trace.c:336 setup: cwd: C:/Users/az/test-long-path-problems
16:06:04.269773 trace.c:337 setup: prefix: This/Is/A/Very/long/pathname/with/more/than/two/hundred/and/sixty/characters/This/Is/A/Very/long/pathname/with/more/than/two/hundred/and/sixty/characters/This/Is/A/Very/long/pathname/with/more/than/two/hundred/more/dir/
16:06:04.269773 git.c:350 trace: built-in: git 'add' '12345'
16:06:04.269773 trace.c:435 performance: 0.006209300 s: git command: 'git.exe' 'add' '12345'
+ set +x
git add -A
有帮助吗?这样做文件会被添加吗? - Ashutosh Jindal