Быстрое и грязное решение для текущей ветки и при условии, что ваша оболочка поддерживает подстановка процесса :
git log --format='%H %d' |
grep --fixed-strings --invert-match \
--file=<(git for-each-ref --format='%(*objectname)' refs/tags)
На английском языке это означает «дайте мне хэши для коммитов»достижимы в текущей ветви, за исключением тех, которые помечены ». Использование %(*objectname)
в формате дает хэш тегированного коммита, а не самого объекта тега, что позволяет нам вычесть их из вывода git log
, используя grep --invert-match
(aka grep -v
).
Добавление информации об декорировании (%d
), чтобы помочь пользователю сориентироваться, добавляет некоторый риск ложных совпадений, но он уменьшается за счет использования полных имен объектов SHA-1.