Я сделал одно простое изменение в большом количестве файлов, версия которых контролируется в git, и я хотел бы иметь возможность проверить, не попадают ли другие изменения в этот большой коммит.
Все изменения имеют вид
- "main()",
+ OOMPH_CURRENT_FUNCTION,
где main () может быть именем любой функции. Я хочу создать различие всех изменений, не относящихся к этой форме.
Параметры -G и -S для git diff поразительно близки - они находят изменения, которые ДОЛЖНЫ соответствовать строке или регулярному выражению.
Есть хороший способ сделать это?
Попытки пока
Другой вопрос описывает, как можно отрицать регулярные выражения, используя этот подход я думаю, что команда должна быть
git diff -G '^((?!OOMPH_CURRENT_FUNCTION).)*$'
но это просто возвращает сообщение об ошибке
fatal: invalid log-grep regex: Invalid preceding regular expression
поэтому я думаю, что git не поддерживает эту функцию регулярного выражения.
Я также заметил, что стандартный unix diff имеет параметр -I, чтобы «игнорировать изменения, все строки которых соответствуют RE». Но я не могу найти правильный способ заменить собственный diff git на инструмент unix diff.
git diff | fgrep -vxf file
- person tripleee   schedule 08.04.2013.gitattribute
для изменений (stackoverflow.com/a/ 12969603/520162). При этом файлы даже не будут отображаться как измененные, еслиmain()
заменяется наOOMPH_CURRENT_FUNCTION
. - person eckes   schedule 08.04.2013