Как отредактировать существующее сообщение тега в git?
у нас есть несколько аннотированных тегов в нашем репозитории git. Старые теги имеют поддельные сообщения, которые мы хотели бы обновить, чтобы быть в нашем новом стиле.
% git tag -n1
v1.0 message
v1.1 message
v1.2 message
v2.0 Version 2.0 built on 15 October 2011.
в этом примере мы хотели бы сделать v1.х сообщений похож на П2.0 сообщений. Кто-нибудь знает, как мы это сделаем?
8 ответов
git tag <tag name> <tag name>^{} -f -m "<new message>"
это создаст новый тег с тем же именем (путем перезаписи оригинала).
чтобы обновить сложное сообщение, просто укажите опцию аннотированного тега с -a
или опция подписанного тега с -s
:
git tag <tag name> <tag name> -f -a
откроется редактор С содержанием вашего старого сообщения тега.
TL; DR
вы можете сделать это, удалив свой тег и воссоздав его во время подделки даты и автора:
> git tag -d <tag-name>
> [GIT_COMMITTER_DATE=<original-commit-date>] \
> [GIT_AUTHOR_NAME=<original-author-name>] \
> git tag <tag-name> [commit]
, index(,))
> }
> }' | # extract all the dates from the info
> tail -2 | head -1)" `# get the second to last date, as the last one is the commit date` \
> git tag tag1 tag1^{} -a -f # finally, update the tag message, but save the date of the old one
>
> git rev-list --objects -g --no-walk --all
6bdcc347fca041a5138f89fdf5276b3ebf9095d5
e18c178f2a548b37799b100ab90ca785af1fede0 tag1
f22d6308c3cd330a3b0d86b9bf05562faf6b6f17
> git show tag1
tag tag1
Tagger: [tagger]
Date: [date of original tag]
[Updated description]
[tagged commit details]
ссылки:
Итак: отфильтруйте вывод по первому токену строки и извлеките остаток строки с помощью awk
Итак: как поместить комментарий строки bash в многострочную команду
4. DIY
кроме того, чтобы обновить метки, Вы можете просто удалить их и создать их снова. Так получается out updating просто добавляет новый тег и указывает на старый, или, альтернативно, просто неявно удаляет старый и создает новый, чтобы указать на ту же фиксацию.
вы можете достичь этого, выдав:
> git tag -d <tag-name>
> [GIT_COMMITTER_DATE=<original-commit-date>] \
> [GIT_AUTHOR_NAME=<original-author-name>] \
> git tag <tag-name> [commit]
здесь [optional]
необязательное поле; <required>
Обязательное поле.
Конечно, вы можете добавить любые флаги после git tag
команда, которую вы обычно бы.
@Энди 'ы решение
git tag <tag-name> <tag-name> -f -a
и неправильно. После этого, с
git show
команда, мы увидим теги стека с тем же именем.
он добавляет новый тег с тем же именем тега и новое сообщение в commit <tag-name>
. Но он не удаляет старый тег. Это особый случай этой команды:
git tag [<commit> | <old-tag>] <tag-name>
, но только <old-tag>
С <tag-name>
.
правильное решение просто, просто обновите тег ЛАДНО.
git tag <tag-name> -f -a
помните, только один здесь.
если мы хотим изменить тег, который не HEAD
нам нужен лишний
используя ответы выше, это мой псевдоним one-liner для .gitconfig
. Заменяет существующий тег и сохраняет дату фиксации.
[alias]
tm = "!sh -c 'f() { export GIT_COMMITTER_DATE=$(git log -1 --format=%ci ); git tag -f -a ^{}; }; f '"
улучшения?
мы хотели бы сделать v1.X сообщения выглядят как v2.0 сообщение
С Git 2.17 (Q2 2018) будет альтернатива созданию новая тег git tag <tag name> <tag name> -f -m "<new message>"
, с "git tag
" узнал явный "--edit
" опции что позволяет сообщение, данное через"-m
" и "-F
" для дальнейшего редактирования.
посмотреть совершить 9eed6e4 (06 Feb 2018) by Николя Мори-Шезмартен (nmorey
).
(слитый Junio C Hamano -- gitster
-- на совершить 05d290e, 06 марта 2018)
tag
добавить--edit
опции
добавить --edit
опция, которая позволяет изменять сообщения, предоставляемые -m
или -F
, таким же образом git commit --edit
делает.