git:我如何recursion地添加匹配glob模式的目录子树中的所有文件?

我在/xxx/documentation里面有几个.screen文件,它的子目录已经被Git跟踪了。

在修改了许多这些屏幕文件之后,我运行git add documentation/\\*.screen 。screen(如git-add的文档中的第一个例子所示)来git-add这些文件,但命令失败:

 致命:pathspec'文件/ \ *。屏幕'不匹配任何文件 

我的命令不好,还是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选项只会添加到以前跟踪和修改的文件中

你告诉shell寻找*.screen (即,这个string – 不存在 – 而不是你想要的所有以.screen结尾的文件)。省略\\所以shell可以执行文件名扩展为你。

这就是我刚刚用于类似的问题git添加目录中的所有文件:

 find . | sed "s/\(.*\)/\"\1\"/g" | xargs git add 

对于原来的问题,命令是:

 find -name "*.screen" | sed "s/\(.*\)/\"\1\"/g" | xargs git add 

请注意,我正在处理完全指定的文件名包含空格的情况。 这就是为什么我的答案。 编辑第一个|之前的部分 为了挑选出不同的文件来添加。

尝试

 git add ./documentation/*.screen 

git add * .java为我工作recursion地添加所有的java文件