Git 如何在目录中递归添加具有特定扩展名的文件

Git 如何在目录中递归添加具有特定扩展名的文件,git,Git,假设存在以下文件: 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/d

假设存在以下文件:

  • 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
的文件,这些文件不计划添加到分段阶段


问题:是否可以使用一个命令递归地将具有特定扩展名的所有文件添加到目录中?如果可能,怎么做?

shell脚本和git的组合怎么样
find git/dir/-type f-name“*.java”| xargs git add

shopt globstar
如果
globstar
处于
关闭状态
,则运行
shopt-s globstar
将其打开。然后呢,

git add git/dir/**/*.java
**
匹配0或更多级别的目录。但如果存在,它也会添加git/dir/subdir/subsubdir/o.java

正如@sschuberth评论所说,您可以使用
git添加“git/dir/***.java”


它适用于Ubuntu和git bash for windows。不确定它是否也适用于其他操作系统。

您实际上不需要启用
globstar
,因为Git本身也执行通配符扩展,即引用的
Git add“dir/***.java”
也可以。@sschuberth谢谢!我不知道。