使用竹子时重新标记后,Git 标签链接到旧提交

Posted

技术标签:

【中文标题】使用竹子时重新标记后,Git 标签链接到旧提交【英文标题】:Git label linked to old commit after relabel when using bamboo 【发布时间】:2019-10-04 23:57:12 【问题描述】:

我在使用标签签出提交时遇到问题。

我已经提交并标记了提交1.0。我不得不做一些变基,最终改变了我历史上的一些提交,这导致我需要在新提交上重新标记 1.0 标记。当我使用git checkout 1.0 手动签出标签时,新的提交被签出并且效果很好。有一种情况是检查标签最终指向旧的提交......这种情况是当我使用 python 脚本执行 git checkout 并且我从 Bamboo Atlassian Job 调用脚本时。

有谁知道是什么原因导致历史记录不更新?请注意,竹子作业每次都会清理它的环境。

【问题讨论】:

【参考方案1】:

一种可能是您刚刚在本地移动了 not deleted/push back the tag。

git push origin :refs/tags/<tagname>
git tag -fa <tagname>
git push origin master --tags

如果推送,Bamboo 作业将能够获取并检查 1.0 标记的正确提交。

OP tyleax 加上in the comments:

我需要再做一步。

Bamboo 远程代理缓存 git 存储库信息。我必须在下次结帐时删除xml-data/build-dir/_git-repositories-cache 中的缓存,它才能通过标签签出正确的提交。 没有删除,它仍然指向旧的提交

【讨论】:

谢谢!这对我帮助最大。我需要再做一步。 Bamboo 远程代理缓存 git 存储库信息。我必须在下次结帐时删除xml-data/build-dir/_git-repositories-cache 中的缓存,它才能通过标签签出正确的提交。没有删除,它仍然指向旧的提交。 @tyleax 感谢您的反馈。我已将您的评论包含在答案中以提高知名度。

以上是关于使用竹子时重新标记后,Git 标签链接到旧提交的主要内容,如果未能解决你的问题,请参考以下文章

如何在运行 Azure 管道时使用标记在提交时获取 git 分支?

通过 npm 节点自动化 Git 提交 + 版本控制 + 标记

git:使用标签

指向已删除提交的 Git 标记会发生啥情况

如何在 Git 中标记较旧的提交?

如何判断一个标签在 Git 中指向哪个提交?