如何git reset --hard <tag>并删除所有本地无关标签?

时间:2019-02-13 04:49:45

标签: git

说我克隆了一个仓库,标签是

  • v1.0
  • v2.0
  • v3.0
  • v4.0(最新提交)

现在我要做

git reset --hard v2.0

当然,最新的提交现在是v2.0,并且代码已重置。 但是当我给git tag时,我仍然会得到

  • v1.0
  • v2.0
  • v3.0
  • v4.0

如何将git重置为v2.0,以便将来也从本地删除v3.0和v4.0标签?

这是什么用例? -我必须计算当前标签和上一个标签。

上一个标签

echo $(git describe --abbrev=0 --tags `git rev-list --tags --skip=0 --max-count=2` | cut -c2- | sed '2q;d')

当前标签

echo $(git describe --abbrev=0 --tags `git rev-list --tags --skip=0 --max-count=2` | cut -c2- | sed '1q;d')

2 个答案:

答案 0 :(得分:1)

git reset将移动HEAD,并且与现有标签无关。

您需要使用git tag -d

删除标签

您可以:

第一个列表中的任何标签都需要删除,而第二个列表中的任何标签都不需要删除。

答案 1 :(得分:0)

如果您使用git reset --hard,并且要取消的提交中有一些带有标签,则不会删除它们。您可以稍后通过删除标签来执行此操作。删除标签后,所有其他相关的提交将被删除。