使用git中的glob模式暂存除特定文件之外的所有文件

时间:2016-07-12 12:43:37

标签: git shell github glob

我正在尝试使用 git add 命令将一些新创建的文件和其他一些编辑过的文件放到git中的暂存区域。我真正想要的是暂存除* .java 文件之外的所有文件(在我的当前目录和我项目中的每个子目录中)。我试图在没有成功的情况下完成这项工作。

pwd:/ d / myProject

这些都没有奏效:

git add !(*.java)
git add \!\(\*.java\)
git add \!\(*.java\)
git add !\(\*.java\)

有人可以帮助我完成这项工作吗?并且在某种程度上可以在这里使用正则表达式代替globs吗?

2 个答案:

答案 0 :(得分:2)

您可以使用find

find . -type f ! -iname '*.java' -exec git add {} +

您还可以使用! -ipath <pattern>跳过与模式匹配的路径,例如:

find . -type f ! -iname '*.java' ! -ipath './a/b/*c*' -exec git add {} +

答案 1 :(得分:2)

这实际上取决于shell的glob设置。您可以做的更多与系统无关的行为是使用find:

find . -not -iname '*.java' -exec git add '{}' \+