Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 无效的路径规范魔法_Git - Fatal编程技术网

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中部分暂存一个文件时,会收到以下错误消息

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
?这有相同的结果。