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 ответ
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
сначала убедитесь, что не были удалены файлы, которые вы не ожидали)
Это магия небольших программ командной строки, каждая из которых выполняет простую конкретную задачу