假设有以下文件:
git/dir/a.java
git/dir/b.java
git/dir/c.java
git/dir/a.swp
git/dir/b.swp
git/dir/subdir/d.java
git/dir/subdir/e.java
我打算仅将所有Java文件添加到 staged 阶段,git add git/dir/*.java
无法递归工作,这意味着git add git/dir/subdir
中的文件将无法成功添加。 git add git/dir/*
将以递归方式将git/dir
内的所有文件(包括扩展名为.swp
的文件)添加到 staged 阶段。>
问题:是否可以使用一个命令以递归方式将所有具有特定扩展名的文件添加到目录中?如果可能的话如何?
答案 0 :(得分:2)
shopt globstar
如果globstar
是off
,请运行shopt -s globstar
将其打开。然后,
git add git/dir/**/*.java
**
匹配0或更多级别的目录。但是它还会添加git/dir/subdir/subsubdir/o.java
(如果存在)。
正如@sschuberth评论所说,您可以使用git add "git/dir/**/*.java"
。
它适用于Ubuntu和git-bash-for-windows。不确定它是否也可以在其他操作系统上使用。
答案 1 :(得分:0)
shell脚本和git的组合怎么样?
find git/dir/ -type f -name "*.java" | xargs git add