从功能分支中删除标签

时间:2021-04-28 09:04:13

标签: git git-tag

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

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

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

后来发现local上有标签:

enter image description here

从本地删除标签: enter image description here

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

1 个答案:

答案 0 :(得分:0)

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

<块引用>

如何列出指向 myFeature 分支历史记录中任何提交的标签?

一种方法是结合 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 将列出所有指向 commit 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
相关问题