如何在我提交--amend时自动更新git标签

时间:2016-01-20 04:31:08

标签: git

如果我对标记的提交git commit --amend,则标记将消失。我需要删除原始标记并重新添加。有没有办法将原始标记移动到新提交?

1 个答案:

答案 0 :(得分:2)

您无法直接绑定the creation of a new commit (--amend)和标记(still references the original commit)。

您需要移动标签(保留旧信息)并删除/替换遥控器上的标签 Juan Antonio Tubíointeresting set of alias来促进该序列:

# Return date of tag. (To use in another alias)
tag-date = "!git show $1 | awk '{ if ($1 == \"Date:\") { print substr($0, index($0,$3)) }}' | tail -2 | head -1 #"

# Show tag message
tag-message = "!git show $1 | awk -v capture=0 '{ if(capture) message=message\"\\n\"$0}; BEGIN {message=\"\"}; { if ($1 == \"Date:\" && length(message)==0 ) {capture=1}; if ($1 == \"commit\" ) {capture=0}  }; END { print message }' | sed '$ d' | cat -s #"

### Move tag. Use: git tagm <tagname> <newcommit> 
tagm = "!GIT_TAG_MESSAGE=$(git tag-message $1) && GIT_COMMITTER_DATE=$(git tag-date $1) && git tag-message $1 && git tag -d $1 && git tag -a $1 $2 -m \"$GIT_TAG_MESSAGE\" #"

### Move pushed tag. Use: git tagmp <tagname> <newcommit> 
tagmp = "!git tagm $1 $2 && git push --delete origin $1 && git push origin $1 #"

修改了提交后(使用新的SHA1),您可以输入:

git tagm <yourTag> <sha>