Git 无效的路径规范魔法
当我尝试在git中部分暂存一个文件时,会收到以下错误消息Git 无效的路径规范魔法,git,Git,当我尝试在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部分添加文件,尝试使用git add-p或git ad
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
部分添加文件,尝试使用git add-p
或git add filename
,但不能同时使用这两种方法。
应该有帮助,我重新安装了git,错误消失了。我不知道最初的问题是什么,但它现在起作用了。还有另一种情况下会出现
无效的pathspec magic
:当文件在.gitattributes
中声明了多个属性时也就是说,直到Git 2.13(2017年第2季度)修复了该缺陷 参见(2017年3月13日)作者。
(于2017年3月17日被合并)
pathspec
:允许转义查询值
在我们自己的.gittributes
文件中,我们有如下属性:
*.[ch] whitespace=indent,trail,space
在查询属性时,我们希望能够询问准确的属性
价值,即
git ls-files :(attr:whitespace=indent,trail,space)
应该可以,但在attr魔术中使用逗号来引入
下一个属性,因此此查询当前失败,原因是:
fatal: Invalid pathspec magic 'trail' in ':(attr:whitespace=indent,trail,space)'
此更改允许通过反斜杠转义字符,以便查询
git ls-files :(attr:whitespace=indent\,trail\,space)
将匹配所有具有值“缩进、尾迹、空格”的路径
空白属性
注意:对于Git 2.20(2018年第4季度),不支持“Git add':(attr:foo)
”,应该在解析命令行参数时被拒绝,但没有被拒绝。
现在是
参见。
(于2018年9月24日合并)
add
:不接受pathspec magic'attr
'
(pathspec
:允许查询属性-
2017-03-13,Git v2.13.0-rc0)添加了新的pathspec magic“attr
”,但仅使用
匹配\u pathspec()
“git add
”有一些与pathspec相关的代码仍然不知道“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'
因此,预期的错误消息来自
“优雅”的拒绝代码路径,而不是“哎呀,我们应该拒绝”
触发此神奇“代码路径”的请求
自Git 2.21(2019年第1季度)以来,“pathspec magic”不再保留给Git ls文件
,而是应用于Git日志
和Git grep
对树对象的遍历已学会遵守“:(attr:label)
”路径规范匹配,该匹配仅用于枚举文件系统上的路径
参见,,(2018年11月18日)作者。
(于2019年1月14日合并)
tree walk
:支持:(attr)
匹配
这让我们可以将:(attr)
与“git grep
”或“git log
”一起使用
:(attr)
需要进行另一轮检查才能声明路径匹配。这是在路径匹配之后完成的,因为当事情不匹配时,我们有很多优化可以走捷径
请注意,如果存在:(attr)
,我们将无法返回所有感兴趣的条目
/所有感兴趣的条目
,因为我们无法确定这一点。
直到匹配路径spec\u attrs()
可以告诉我们“是:所有这些路径都满足:(attr)
”
第二个音符。即使我们走一棵特定的树,我们也使用属性
从工作树(或返回到索引),而不是从该树上的.gittributes
文件。
这本身并不一定是错误的,但用户必须意识到这一点
我无法复制此内容。可能需要指定您使用的Git版本。“文件”实际上是“文件”还是你没有告诉我们什么?请这样做并尝试一下。另外,显示真实文件的名称。我认为这对你的问题很重要。Git的大多数程序都有一个特殊的参数,--
,用于指示路径规范列表的开始原因。您是否尝试过git add-p--mass\u scan.py
?这有相同的结果。