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文件