当我尝试在git中部分暂存文件时,我收到以下错误消息。
git add -p mass_scan.py
fatal: Invalid pathspec magic 'prefix:8' in ':(prefix:8)mass_scan.py'
No changes.
这是什么意思?如何部分暂存文件?
我使用git版本
git version 2.6.2.450.g259b5e6
直接从源安装(没有包管理器)。我仍然可以使用tig
部分添加文件。
答案 0 :(得分:1)
我重新安装了git
,错误消失了。我不知道最初的问题是什么,但它现在有效。
答案 1 :(得分:1)
另一种情况是Invalid pathspec magic
可以出现:当文件在.gitattributes
中声明了多个属性时。
也就是说,直到Git 2.13(2017年第二季度)修复了这个bug。
commit c5af19f见commit b0db704,Brandon Williams (mbrandonw
)(2017年3月13日)
(Junio C Hamano -- gitster
--于2017年3月17日commit f6c64c6合并)
pathspec
:允许转义查询值在我们自己的
.gitattributes
文件中,我们有以下属性:*.[ch] whitespace=indent,trail,space
查询属性时,我们希望能够确切地询问 价值,即
git ls-files :(attr:whitespace=indent,trail,space)
应该可以工作,但是在attr魔术中使用逗号来引入 下一个attr,这个查询当前失败了:
fatal: Invalid pathspec magic 'trail' in ':(attr:whitespace=indent,trail,space)'
此更改允许通过反斜杠转义字符,例如查询
git ls-files :(attr:whitespace=indent\,trail\,space)
将匹配具有值"
indent,trail,space
"的所有路径为了 空白属性。
注意:使用Git 2.20(Q8 2018)," git add ':(attr:foo)'
"不支持,并且应该在解析命令行参数时被拒绝,但不被拒绝。
现在是
commit 84d938b见Nguyễn Thái Ngọc Duy (pclouds
)(2018年9月18日)
(Junio C Hamano -- gitster
--合并于commit faadedb,2018年9月24日)
add
:不接受pathspec magic'attr
'Commit b0db704(
pathspec
:允许查询属性 - 2017-03-13,Git v2.13.0-rc0)添加了新的pathpec magic'attr
'但只有match_pathspec()
。
"git add
"有一些与路径规范相关的代码仍然不知道'attr
'并将拯救:$ git add ':(attr:foo)' fatal: BUG:dir.c:1584: unsupported magic 40
更好的解决方案是提供此代码支持'
attr
'。但是我 不知道需要做多少工作(我不熟悉这种新魔法)。现在,让我们用更友好的信息拒绝这种魔法:$ git add ':(attr:foo)' fatal: :(attr:foo): pathspec magic not supported by this command: 'attr'
Update
t6135
以便预期的错误消息来自 "优美"拒绝代码路径,而不是" oops,我们应该拒绝 要求触发这种魔力"代码路径。
自从Git 2.21(2019年第一季度)以来," pathspec magic"已不再保留git ls-files
,但也适用于git log
和git grep
!
遍历树对象已经学会了尊重" :(attr:label)
" pathspec匹配,仅用于枚举文件系统上的路径。
commit 5a0b97b见commit 22af33b,commit 93e2379,commit 67022e0,commit e092073,Nguyễn Thái Ngọc Duy (pclouds
)(2018年11月18日)。{
(由Junio C Hamano -- gitster
--合并于commit d6f05a4,2019年1月14日)
tree-walk
:支持:(attr)
匹配这可让我们将
在我们声明路径匹配之前,:(attr)
与&#34;git grep <tree-ish>
&#34;或&#34;git log
&#34;。
:(attr)
需要进行另一轮检查。这是在路径匹配之后完成的,因为我们有很多优化可以在事情不匹配时采用快捷方式。请注意,如果存在
:(attr)
,我们将无法再返回all_entries_interesting
/all_entries_not_interesting
,因为我们无法确定这一点。
直到match_pathspec_attrs()
告诉我们&#34;是:所有这些路径都满足:(attr)
&#34;。第二个注意事项。即使我们走一个特定的树,我们也使用属性 来自 worktree (或回退到索引),而不是来自该树上的
.gitattributes
个文件。
这本身并不一定是错的,但用户只需要知道这一点。
答案 2 :(得分:0)
尝试使用git add -p
或git add filename
,但不能同时使用两者。
应该帮忙