致命:无效的refspec' + refs / heads / *'

时间:2016-04-22 14:16:44

标签: git

git-fetch doc中,您可以看到:

  

匹配< src>的远程引用取出,如果< dst>不是    空字符串 ,与之匹配的本地引用使用快进   < SRC取代。如果使用可选的加号,则甚至更新本地引用   如果它不会导致快进更新。

所以我们可以使用empty string as destination。现在我的当前存储库有一个名为origin的遥控器。当我尝试取这样的时候,我收到一个错误:

git fetch origin +refs/heads/*
fatal: Invalid refspec '+refs/heads/*'

但为什么empty string导致invalid refspec

2 个答案:

答案 0 :(得分:1)

  

当我尝试取这样的时候,我收到一个错误:

您不需要以这种方式提取信息。

你可以像这样使用它(不需要自己定义引用):

# fetch all ref
git fetch 

# fetch a specific ref
git fetch origin 
  

参数的格式是可选加+,后跟源ref,后跟冒号:,后跟目标引用。空的时候可以省略冒号。

答案 1 :(得分:1)

所有git文档中的refspec描述通常都有点差,部分原因是所有这些东西随着时间的推移而发展,目前的最佳实践refspecs只是针对git 1.5版发明的,今天仍然支持旧的方法。 / p>

在任何情况下,shell glob样式*匹配都是有限的(less so in git 2.6比以前更多)。一个限制是需要完全配对:也就是说,您不能在获取refspec的左侧使用通配符匹配*,而右侧没有相应的*。这就是为什么git最终会拒绝你的空refspec,即使它应该逻辑上在命令行上工作(因为它应该能够将任何匹配的ref放到FETCH_HEAD)。