从功能分支中删除标签

Delete tags from feature branch

我们使用 Bitbucket 来维护我们的代码。 我们的政策是不推送标签。

我创建了一个名为 myFeature 的功能分支并在本地获取。

对提交和推送的文件进行了一些更改。

后来发现本地有标签:

已从本地删除标签:

如何从 myFeature 分支中删除标签?

我不确定这是否能回答您的实际问题,但这里是问题的答案:

How do I list tags pointing at any commit in the history of myFeature branch ?

一种方法是结合 git rev-listgit for-each-ref --points-at :

git rev-list myFeature |\
  xargs -L1 git for-each-ref refs/tags --format="%(refname)" --points-at
  • git rev-list myFeature 将列出 myFeature
  • 历史中的所有提交
  • git for-each-ref refs/tags --format="%(refname)" --points-at xxx 将列出所有指向提交的标签 xxx
  • xargs -L1 ... 是对来自左侧的每一行调用一次右侧命令的一种方法

您应该得到一个格式如下的列表:

$ git rev-list myFeature | xargs -L1 git for-each-ref refs/tags --format="%(refname)" --points-at
refs/tags/SFDCxxxx1
refs/tags/SFDCxxxx2
refs/tags/SFDCxxxx3
 ...

至于删除它们:

一旦您确认只列出了要删除的标签,就可以使用此列表从远程删除标签:

... | xargs git push origin -d

要在本地删除标签,您需要去掉开头的 refs/tags/,或使用 update-ref -d :

# one way : replace the '--format' option of 'git for-each-ref' :
... --format="%(refname:short)" ... | xargs git tag -d

# another way : feed 'refs/tags/SFDCxxx' references to 'update-ref -d' one by one
... | xargs -L1 git update-ref -d