TL; DR
これを行うには、タグを削除し、日付と作成者を偽装して再作成します。
> git tag -d <tag-name>
> [GIT_COMMITTER_DATE=<original-commit-date>] \
> [GIT_AUTHOR_NAME=<original-author-name>] \
> git tag <tag-name> [commit]
全編:
サングラム上に構築の回答(元は編集として提案):
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.サングラムの改善
<tag name>^{}
の2番目の引数として使用すると、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(または同様の)マジックを使用するか、代わりに希望の日付を貼り付けます。以下は、2番目の例の代替です(そうしないと、オーバーライドのために元の日付が失われます)。
> 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
で十分です。以下の私の回答を