如何创建一个git别名来远程删除标签?

时间:2016-06-02 06:00:28

标签: git git-tag git-alias

我在创建git别名时无法远程删除标记。

我的.gitconfig中有以下内容:

[alias]
  deltag = push origin :refs/tags/$1

在本地删除标记后(deltag)运行git tag -d testtag别名会导致此错误:

$ git deltag testtag
error: src refspec testtag does not match any.
error: failed to push some refs to 'ssh://........'

在在本地删除它之前尝试运行此别名会导致此错误:

$ git deltag testtag
remote: warning: Deleting a non-existent ref.
To ssh://........
- [deleted]         $1

此别名使用的正确语法是什么?

1 个答案:

答案 0 :(得分:3)

我通过在StackOverflow上搜索并将其他答案放在一起来解决这个问题。

也可能有其他解决方案,但将别名转换为 shell命令会成功传递标记参数:

[alias]
  deltag = !sh -c 'git push origin :refs/tags/$1' -

甚至更好,将本地和远程删除组合成一个别名:

[alias]
  deltag = !sh -c 'git tag -d $1 && git push origin :refs/tags/$1' -

输出:

$ git deltag testtag
Deleted tag 'testtag' (was be73a23)
To ssh://.......
 - [deleted]         testtag