Я пытаюсь идентифицировать все коммиты с сообщением, но не с [core]
. Это мои неудачные попытки:git: идентифицировать все коммиты, не соответствующие шаблону
Простой подход
git rev-list --grep '^(?!(\[core\]).).+' "branch1...branch2"
- пустой результат
Включить расширенный флаг
git rev-list -E --grep '^(?!(\[core\]).).+' "branch1...branch2"
Сообщение об ошибке
fatal: command line, '^(?!(\[core\]).).+': Invalid preceding regular expression
.Похоже, что негативный прогноз не поддерживается git grep.
Сравнивая список всех фиксаций в список тех, с тегом (cf. this answer):
git rev-list "branch1...branch2" | grep -Fxv <(git rev-list -E --grep '^\[core\].+' "branch1...branch2")
- Результаты в
sh: syntax error near unexpected token `('
- Результаты в
PS: Я не могу перейти на Git 2.x, поэтому --invert-grep
не является опцией
Ошибка в трех - это пространство, которое вы добавили между '<' и '('. Удалить это. Но если это регулярное выражение не работает с 'rev-list' в первых двух попытках, почему вы думаете, что это сработает в третьей попытке? –
ой, я фактически использовал отрицательный эквивалент в третьей попытке. e проблема, когда вы пытаетесь предоставить минимальный пример для своего вопроса, а не вашу оригинальную проблему :-). Удаление пространства ничего не изменило – PhilLab
Какую оболочку вы используете? '<(...)' является замещением процесса и должно работать нормально в bash, но не будет в ash/dash/csh/etc. –