git提交修正而不丢失标签

时间:2017-12-16 05:55:37

标签: git git-tag amend

我有以下脚本在Git的post-commit钩子上运行:

#!/bin/sh
# by Martin Seeler, and
# by Jorge Javier Araya Navarro

# destination of the final changelog file
OUTPUT_FILE=CHANGELOG.md

# generate the changelog
if ! type gitchangelog > /dev/null; then
    echo "ERROR: Please install gitchangelog"
    exit 1
fi

gitchangelog > $OUTPUT_FILE

# prevent recursion!
# since a 'commit --amend' will trigger the post-commit script again
# we have to check if the changelog file has changed or not
res=$(git status --porcelain | grep $OUTPUT_FILE | wc -l)
if [ "$res" -gt 0 ]; then
  git add $OUTPUT_FILE
  git commit --amend --no-edit
  echo "Populated Changelog in $OUTPUT_FILE"
fi

这样可以方便地使用gitchangelog生成CHANGELOG文件,而无需创建新的提交来注册该文件的更改。

但是,如果我在HEAD上有标记,则在commit --amend运行后标记"丢失" ,因此我必须在本地和远程删除它重新创造令人讨厌的东西。

我试图找到一种方法让脚本在修改后移动标签,但此时我不确定我在做什么。我应该先在HEAD上列出标签吗?修改后我可以移动标签吗?请问Git知道我的意思吗?

1 个答案:

答案 0 :(得分:1)

您可以查看git tagm alias I described here,以便在git commit --amend之后移动代码。

这将自动执行以下序列:

  • 找到标签,
  • 移动(即重新创建)
  • 删除旧的。