无效的路径规则魔法

时间:2016-01-08 20:04:53

标签: 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部分添加文件。

3 个答案:

答案 0 :(得分:1)

我重新安装了git,错误消失了。我不知道最初的问题是什么,但它现在有效。

答案 1 :(得分:1)

另一种情况是Invalid pathspec magic可以出现:当文件在.gitattributes中声明了多个属性时。
也就是说,直到Git 2.13(2017年第二季度)修复了这个bug。

commit c5af19fcommit b0db704Brandon 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 84d938bNguyễn Thái Ngọc Duy (pclouds)(2018年9月18日) Junio C Hamano -- gitster --合并于commit faadedb,2018年9月24日)

  

add:不接受pathspec magic' attr'

     

Commit b0db704pathspec:允许查询属性 -   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 loggit grep! 遍历树对象已经学会了尊重" :(attr:label)" pathspec匹配,仅用于枚举文件系统上的路径。

commit 5a0b97bcommit 22af33bcommit 93e2379commit 67022e0commit e092073Nguyễ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 -pgit add filename,但不能同时使用两者。 应该帮忙