用正则表达式git clean exclude

时间:2015-06-25 02:21:52

标签: regex git git-clean

我想找到一种使用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与正则表达式一起使用?

1 个答案:

答案 0 :(得分:1)

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的实用程序功能(可通过自制程序或其他程序包管理器安装)
    • git clean将获取此列表并清理文件(首先使用-n以确保没有删除您未预料到的文件)

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

相关问题