4

我想找到一种使用git clean.

没有正则表达式:

git clean -dfx --exclude=".idea/"

使用正则表达式(尝试过;不工作):

git clean -dfx --exclude='(.*\/)*(\.idea\/.*)(.*)'
git clean -dfx --exclude="(.*\/)*(\.idea\/.*)(.*)"
git clean -dfx --exclude=r'(.*\/)*(\.idea\/.*)(.*)'
git clean -dfx --exclude=r"(.*\/)*(\.idea\/.*)(.*)"

你如何使用git clean正则表达式?

4

1 回答 1

2

git clean不支持正则表达式。


解决方法是这样的:

$ git clean -n | cut -f3 -d' ' | grep -v -E --color=never '<PATTERN>' | ifne git clean

这里发生的事情的分解:

  • git clean -n生成git clean将被执行的文件列表(您可以使用类似-d,-x-X此处的标志)
    • -n空运行(实际上不做任何事情)
  • cut -f3 -d' '从这些匹配项中删除第三个字段(由空格分隔)
    • -f3第三场
    • -d' '使用空格作为分隔符
  • grep -v -E --color=never '<PATTERN>'
    • -v从 grep 反转匹配
    • -E将 PATTERN 解释为扩展的正则表达式
    • color=never防止彩色grep输出与以下命令混淆(可以省略)
    • '<PATTERN>'正则表达式
  • ifne git clean将文件列表(如果有文件)通过管道传输到git clean
    • ifne来自moreutils的实用功能(可通过 homebrew 或其他包管理器安装)
    • git clean将获取此列表并清理文件(-n首先使用以确保没有文件被删除,您没有预料到)

这就是每个执行简单特定任务的小型命令行程序的魔力

于 2016-07-28T15:16:56.460 回答