在 git 中使用 glob 模式暂存除特定文件之外的所有文件
staging all files except specific files using glob patterns in git
我正在尝试使用 git add 命令将一些新创建的文件和其他一些已编辑的文件暂存到我在 git 的暂存区。我真正想要的是 暂存除 *.java 文件之外的所有内容(在我的 当前目录 和 每个子目录 在我的项目中)。我试图完成这项工作,但没有成功。
密码:/d/myProject
这些都不起作用:
git add !(*.java)
git add \!\(\*.java\)
git add \!\(*.java\)
git add !\(\*.java\)
有人可以帮我完成这项工作吗? 是否可以在这里使用正则表达式而不是 glob?
您可以使用 find
:
find . -type f ! -iname '*.java' -exec git add {} +
您还可以使用 ! -ipath <pattern>
跳过匹配模式的路径,例如:
find . -type f ! -iname '*.java' ! -ipath './a/b/*c*' -exec git add {} +
这实际上取决于 shell 的 glob 设置。为了获得更独立于系统的行为,您可以做的是使用 find:
find . -not -iname '*.java' -exec git add '{}' \+
我正在尝试使用 git add 命令将一些新创建的文件和其他一些已编辑的文件暂存到我在 git 的暂存区。我真正想要的是 暂存除 *.java 文件之外的所有内容(在我的 当前目录 和 每个子目录 在我的项目中)。我试图完成这项工作,但没有成功。
密码:/d/myProject
这些都不起作用:
git add !(*.java)
git add \!\(\*.java\)
git add \!\(*.java\)
git add !\(\*.java\)
有人可以帮我完成这项工作吗? 是否可以在这里使用正则表达式而不是 glob?
您可以使用 find
:
find . -type f ! -iname '*.java' -exec git add {} +
您还可以使用 ! -ipath <pattern>
跳过匹配模式的路径,例如:
find . -type f ! -iname '*.java' ! -ipath './a/b/*c*' -exec git add {} +
这实际上取决于 shell 的 glob 设置。为了获得更独立于系统的行为,您可以做的是使用 find:
find . -not -iname '*.java' -exec git add '{}' \+