Git标签疑问:新增标签后旧提交为何同时被标记新标签?
问题分析与解决办法
首先,你的核心操作流程其实是没问题的——正常来说,0.1标签应该只指向第一个提交(msg1),0.2标签指向第二个提交(msg2),不会出现第一个提交同时挂两个标签的情况。出现这个异常,大概率是你在打0.2标签的时候,不小心指定了错误的提交对象,或者后续推送时出现了误操作。
先检查本地标签的实际指向
先在本地仓库里确认两个标签对应的提交是否正确:
- 执行
git show 0.1,查看输出里的提交哈希和提交信息,应该是你第一次提交的msg1; - 再执行
git show 0.2,正常应该显示第二次提交的msg2和对应的哈希。
如果本地输出显示两个标签确实都指向第一个提交,那说明你打0.2标签的时候,没有在第二次提交的HEAD上操作——比如可能打完msg2提交后,你又切换回了第一个提交的分支/哈希,然后打了0.2标签。
修正步骤
如果确认0.2标签指向错误,按以下步骤修正:
- 删除本地错误的
0.2标签:git tag -d 0.2 - 切换到master分支(确保当前在第二次提交的HEAD上):
git checkout master - 重新打
0.2标签:git tag -a 0.2 -m "lib v0.2" - 先删除远程仓库的错误
0.2标签:git push origin :refs/tags/0.2 - 重新推送正确的
0.2标签和master分支:git push origin master --tag 0.2
额外注意
如果本地标签指向是正确的,但GitHub页面显示异常,大概率是页面缓存问题,刷新几次或者等几分钟再看就会恢复正常。
内容的提问来源于stack exchange,提问作者minecraftplayer1234
相关产品推荐
相关产品推荐

