我正在构建一个应用程序,并且一如既往地使用Git进行版本控制。
以下是输入和输出,希望你能帮助我:
# git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
app/CodeBehind/Con.php
# git add app/CodeBehind/Con.php
fatal: unable to stat 'app/CodeBehind/Con.php': No such file or directory
对我来说没有任何意义,我还没有找到解决方案,我在两篇文章中读到我应该从Git中删除文件,类似于git rm "[fileName]"
,但它没有&找到与文件名Con.php
匹配的内容。
我该如何解决这个问题?
答案 0 :(得分:1)
确定发生在我身上,事实证明新的Windows“受控文件夹”保护功能阻止了git。将git添加到允许的应用列表中可以解决此问题。
答案 1 :(得分:0)
鉴于OP已经尝试删除并重新添加文件但未成功,问题的关键可能是Con.php
的完整路径已达到260字符限制在窗户。但是,当我尝试重现此问题时,错误消息明确表示fatal: unable to stat 'very/long/path/name': Filename too long
所以我不确定这是否是问题。
要检查这是否是问题,切换到包含Con.php
的目录并执行以下操作:
pwd -W | wc -c
这应该计算当前目录的Windows路径中的字符数。如果计数不&gt; = 260,那么这不是问题,我建议您转到下面的Debugging other issues
部分。但是,如果计数>&gt; = 260,则按以下步骤操作:
git config --system core.longpaths true
然后再次尝试添加文件。
请参阅下面的操作,创建一个包含&gt; 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 #Notice that there is no error now
$ git status #Shows that the file was successfully staged
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以及bash,perl和tcl 随Git for Windows一起发布。)
并注意这一点:
使用此选项,脚本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
答案 2 :(得分:-1)
我遇到了同样的问题.. 转到病毒和威胁防护设置,然后关闭下面的受控文件夹访问选项。 然后再试一次。它会运行。