我们使用 Bitbucket 来维护我们的代码。 我们的政策是不推送标签。
我创建了一个名为 myFeature 的功能分支并在本地获取。
对提交和推送的文件进行了一些更改。
后来发现local上有标签:
如何从 myFeature 分支中删除标签?
答案 0 :(得分:0)
我不确定这是否能回答您的实际问题,但这里是问题的答案:
<块引用>如何列出指向 myFeature
分支历史记录中任何提交的标签?
一种方法是结合 git rev-list
和 git 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