忽略 git 挂钩中的多个目录

Ignore multiple directories in git hook

我想忽略 git 提交挂钩中的任何 distnode_modules 目录。我试过这个:

git diff --cached --name-only --diff-filter=ACM | find . -path ./node_modules -prune -o -path './**/dist -prune -o -name '*.js'

但是没用。查找似乎不接受从 git diff...

中找到的文件

如果我运行:

git diff --cached --name-only --diff-filter=ACM

我正确地获取了暂存文件:

./dist/some-file.js

如果我 运行:

find . -path ./node_modules -prune -o -path './**/dist' -prune -o -name '*.js' -print

我正确地得到了一个文件列表,其中不包括 distnode_modules 目录中的任何文件。

我怎样才能将这些结合起来,使我的 git 挂钩不会在 dist 目录中拾取暂存文件。

find不处理它的标准输入,所以在|

之后不能使用

可以改用 grep

| grep -v '/dist/' | grep -v '/node_modules/'

或使用一个 grep 进程

| grep -Ev '/dist/|/node_modules/'