如何真正删除git / SourceTree上的标记

时间:2016-02-11 08:24:35

标签: git tags atlassian-sourcetree sourcetree

我知道如何从SourceTree中删除标签。只需右键单击,删除并勾选“从所有遥控器中删除标记”。然后执行以下操作(为了便于阅读,我省略了标记-c diff.mnemonicprefix=false -c core.quotepath=false):

git tag -d my_tag
git push -v origin :refs/tags/my_tag

这很有效。

这是问题所在。

一段时间后,其他开发人员会将其功能分支推送到源,SourceTree会自动将所有本地标签推送到远程服务器。这将重新创建我刚刚删除的标签。

我知道这个想法是“不应该”删除标签,例如标记版本,但有时会发生错误。

有什么建议吗?

1 个答案:

答案 0 :(得分:6)

我找到的唯一解决方案就是让所有其他开发人员在从遥控器中删除标签后删除标签的本地副本。我找到了一个脚本帮助here

  

简单来说,如果你想尝试做像git fetch -p这样的事情   -t,从git版本1.9.4开始不起作用。

     

但是,有一个简单的解决方法仍然有效   版本:

git tag -l | xargs git tag -d # remove all local tags
git fetch -t                  # fetch remote tags
     

单行内容可写为:

git tag -l | xargs git tag -d && git fetch -t
     

或者,您可以在〜/ .gitconfig文件中添加一个新别名,以缩短时间:

     在

[alias]

     pt = !git tag -l | xargs git tag -d && git fetch -t 
     

现在,您只需调用pt别名来修剪本地陈旧标记:

git pt