我有几个.screen文件在/xxx/documentation
及其子目录中,这些文件已经被Git跟踪。
修改了很多这些屏幕文件后,我运行git add documentation/\\*.screen
(如git-add
文档的第一个示例所示)来暂存这些文件,但是该命令失败了:
fatal: pathspec 'documentation/\*.screen' did not match any files
我的命令有问题吗?还是Git有bug?
这是文档中的错误。使用以下命令并将星号用引号括起来
$ git add 'documentation/*.screen'
或者
$ git add documentation/\*.screen
以获取所需的行为。
如果您想仅添加当前目录中的文件,请使用
$ git add *.screen
更新:我提交了一个修补程序来更正此问题,现已在1.6.6.2版本中修复。
我尝试了已被接受的答案,但它对我没有起作用.. 所以在这里分享我的答案,以防有人想要完成工作而不想浪费时间分析可能导致问题的各个方面:
find documentation -name "*.screen" | xargs git add -u
//使用git-add命令的-u选项,将之前已经被跟踪并修改过的文件添加到索引中
我刚用这个解决了一个类似的git问题,使得它只添加目录中的所有文件:
find . | sed "s/\(.*\)/\"\1\"/g" | xargs git add
对于原始问题,命令应该是:
find -name "*.screen" | sed "s/\(.*\)/\"\1\"/g" | xargs git add
|
之前的部分以选择要添加的不同文件。*.screen
(即这个字符串 - 但它不存在 - 而不是你想要的“所有以.screen
结尾的文件”)。省略\\
,这样Shell就可以为你扩展文件名。对我来说,git add *.java 可以递归地添加所有的Java文件。
.java
文件的情况下才有效。如果有,那么只会添加这些文件。 - Robin Green尝试
git add ./documentation/*.screen
git add ' *.cpp *.h'
导致上述错误fatal: pathspec ' *.cpp *.h' did not match any files
,而git add ' *.cpp' '*.h'
则可以正常工作。 - mirtan