不失去标签的情况下修改 Git 提交记录

3
我有以下脚本,它在Git的提交后钩子上运行:
#!/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个回答

2
您可以查看我在这里描述的git tagm别名,以便在执行git commit --amend后移动标签。
这将自动化以下过程:
- 查找标签, - 移动(即重新创建)标签, - 删除旧标签。

有没有想法如何获取 HEAD 上标签列表以供稍后与别名一起使用? - shackra
2
@shackra,你可以在使用https://dev59.com/72855IYBdhLWcg3wFAHy#15353441修改之前列出这些标签:`git tag --points-at HEAD`。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接