TL; DR
날짜와 작성자를 스푸핑하는 동안 태그를 삭제하고 다시 작성하면됩니다.
> git tag -d <tag-name>
> [GIT_COMMITTER_DATE=<original-commit-date>] \
> [GIT_AUTHOR_NAME=<original-author-name>] \
> git tag <tag-name> [commit]
전체 이야기:
Sungram 에 구축 의 답변 (원래 편집으로 제안 됨) :
1. 수락 된 답변
이것은 Andy 와 Eric Hu 보다 개선 된 것입니다 의 답변에 . 그들의 답변은 이전 태그 객체를 참조하는 새로운 태그 객체를 생성하며 둘 다 동일한 이름을 갖습니다.
이를 설명하려면 다음을 고려하십시오.
> git tag tag1 tag1 -f -a # accepted answer
> git rev-list --objects -g --no-walk --all
[ example output: ]
6bdcc347fca041a5138f89fdf5276b3ebf9095d5
260ab7928d986472895b8c55e54569b3f3cb9517 tag1
a5797673f610914a45ef7ac051e3ee831a6e7c25 tag1
f22d6308c3cd330a3b0d86b9bf05562faf6b6f17
> git show tag1
tag tag1
Tagger: [tagger]
Date: [date of updated tag]
[Updated description]
tag tag1
Tagger: [tagger]
Date: [date of original tag]
[Original description]
[tagged commit details]
2. Sungram의 개선
대신 <tag name>^{}
두 번째 인수로 사용하면 git tag
이름이 같은 모든 이전 태그가 삭제됩니다.
이전 터미널 세션의 계속을 고려하십시오.
> git tag tag1 tag1^{} -f -a # suggested improvement
> git rev-list --objects -g --no-walk --all
[ example output: ]
6bdcc347fca041a5138f89fdf5276b3ebf9095d5
75f02acacfd7d91d55b5bcfdfb1f00aebeed15e3 tag1
f22d6308c3cd330a3b0d86b9bf05562faf6b6f17
> git show tag1
tag tag1
Tagger: [tagger]
Date: [date of updated tag]
[Updated description]
[tagged commit details]
3. 날짜를 저장
마지막으로 원래 태그의 날짜를 업데이트 된 태그의 날짜로 유지하려면 awk (또는 유사한) 마술을 사용하거나 원하는 날짜를 붙여 넣으십시오. 다음은 두 번째 예를 대체 합니다 (그렇지 않으면 대체로 인해 원래 날짜가 손실 됨).
> GIT_COMMITTER_DATE="$(git show tag1 | # get info about the tag cascade including the date original of the original tag
> awk '{
> if ($1 == "Date:") {
> print substr($0, index($0,$3))
> }
> }' | # 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]
참고 문헌 :
4. DIY
태그를 업데이트하는 대신 태그를 삭제하고 다시 만들 수 있습니다. 업데이트로 인해 새 태그가 추가되고 이전 태그를 가리 키거나 이전 태그를 암시 적으로 삭제하고 어쨌든 동일한 커밋을 가리키는 새 태그를 만듭니다.
다음을 발행하여이를 달성 할 수 있습니다.
> 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 -m "A message" --edit v1.0
합니다. 아래 답변을