До сих пор я:
git rev-parse <tagname> | xargs git cat-file -p
но это не самая простая вещь для анализа. Я надеялся на что-то похожее на git-log
--pretty
, чтобы я мог захватить только ту информацию, которая мне нужна.
Любые идеи? Благодаря
До сих пор я:
git rev-parse <tagname> | xargs git cat-file -p
но это не самая простая вещь для анализа. Я надеялся на что-то похожее на git-log
--pretty
, чтобы я мог захватить только ту информацию, которая мне нужна.
Любые идеи? Благодаря
Более прямой способ получить такую же информацию:
git cat-file tag <tagname>
Это использует одну команду и избегает трубы.
Я использовал это в bash script следующим образом:
if git rev-parse $TAG^{tag} -- &>/dev/null
then
# Annotated tag
COMMIT=$(git rev-parse $TAG^{commit})
TAGGER=($(git cat-file tag $TAG | grep '^tagger'))
N=${#TAGGER} # Number of fields
DATE=${TAGGER[@]:$N-2:2} # Last two fields
AUTHOR=${TAGGER[@]:1:$N-3} # Everything but the first and last two
MESSAGE=$(git cat-file tag $TAG | tail -n+6)
elif git rev-parse refs/tags/$TAG -- &>/dev/null
then
# Lightweight tag - just a commit, basically
COMMIT=$(git rev-parse $TAG^{commit})
else
echo "$TAG: not a tag" >&2
fi
git show $TAG
покажет вам информацию для тега, а также фиксацию, на которую указывает.
Если у вас есть что-то, что уже работает для вас, но неудобно печатать, вы всегда можете установить псевдоним:
[alias]
showtag = !sh -c 'git rev-parse $1 | xargs git cat-file -p' -
И назовите его с помощью:
$ git showtag my-tag-name
Это уже давно ответили, но по-прежнему является лучшим результатом поиска, даже если это не лучшее решение, поэтому вот оно:
Команда:
git for-each-ref refs/tags/$TAG --shell --format='
TAG=%(refname)
COMMIT=%(objectname)
TAGGER=%(tagger)
EMAIL=%(taggeremail)
DATE=%(taggerdate)
CONTENTS=%(contents)
'
- оболочка содержит цитаты для сценариев оболочки. Существует также - perl, - python и - tcl. Если вы не хотите писать весь формат в качестве параметра командной строки, вы также можете поместить его в файл file.txt и выполните следующее:
git for-each-ref refs/tags/<tag> --shell --format="$(cat file.txt)"
Вывод:
TAG='refs/tags/4.1.0-RC1'
COMMIT='973cc103f942330550866588177fe53ea5765970'
TAGGER='ml_'
EMAIL='<[email protected]>'
DATE='Fri Sep 16 14:14:50 2016 +0200'
CONTENTS='Release 3:
* INSTALL.md added.
* GIT.md modified.
'
Дополнительная информация здесь: https://git-scm.com/docs/git-for-each-ref