一些背景:
我目前有两个本地的git仓库指向同一个origin/master项目。我有两个git仓库是为了有一个干净的主要副本,可以随时使用,另一个是我用来进行更改、提交等操作的沙盒。这可能有些过度,但对我个人来说有一些优点,因为我有一个重复的本地git副本。
一位同事最初创建了一个1.0.2的轻量级标签,但我们删除了它,并重新打上了同样编号的注释版本标签。他通过git push将更改提交到远程存储库。我在我的两个本地git实例上拉取了最新的更改。
我们的标签如下:
release-1.0.0
release-1.0.1
release-1.0.2
问题:
这是我无法解决的问题。当我运行“git describe
”时,我的沙盒存储库显示最新的标签版本(release-1.0.2)。这正是我所期望的。然而,我只从中拉取代码的干净存储库副本在执行“git describe
”时显示较旧的标签(release-1.0.1)。我验证了两者都指向原始主分支。我进行了更多的研究,并找到了一个overstack solution,指导我运行“git cat-file -t”。以下是我注意到的差异:
git cat-file -t release-1.0.1 --> tag
git cat-file -t release-1.0.2 --> commit
当我在干净的代码库上运行“
git describe
”时,为什么会显示一个较旧的标签版本,而我的沙盒库却不会?如果我在干净的库副本上运行“git describe --tags
”,我可以确认看到列出了release-1.0.2。
release-1.0.2
。问题在于,默认情况下,git pull
本身不会获取新的注释标签并用其覆盖旧的轻量级标签。尝试使用git tag -d release-1.0.2
在本地删除标签,然后运行git pull
。然后使用git describe
检查情况。 - jub0bs