如何删除已推送的Git标记?
当前回答
似乎xargs已经做了很多工作。回顾这篇文章,我猜你所经历的xargs的缓慢是因为最初的答案使用了xargs-n 1,而实际上并不需要。
除了xargs自动处理最大命令行长度之外,这与方法1等效:
git tag | sorting_processing_etc | xargs git push --delete origin
xargs也可以并行运行进程。使用xargs的方法2:
git tag | sorting_processing_etc | xargs -P 5 -n 100 git push --delete origin
上面最多使用5个进程来处理每个进程中最多100个参数。你可以尝试这些论点,以找到最适合你的需求的东西。
其他回答
如果您有一个远程标签v0.1.0要删除,并且您的远程标签是源,那么只需:
git push origin :refs/tags/v0.1.0
如果您还需要在本地删除标记:
git tag -d v0.1.0
有关Git异常的解释,请参见Adam Franco的回答:删除语法。
要删除远程存储库上的标记,可以使用
git push <remote> :refs/tags/<tagname>
解释上述内容的方法是将其读取为空值,即冒号被推送到远程标记名称之前的值。
我只是想分享我创建的别名,它做了同样的事情:
将以下内容添加到~/.gitconfig中
[alias]
delete-tag = "!f() { \
echo 'deleting tag' $1 'from remote/origin ausing command: git push --delete origin tagName;'; \
git push --delete origin $1; \
echo 'deleting tag' $1 'from local using command: git tag -d tagName;'; \
git tag -d $1; \
}; f"
用法如下:
-->git delete-tag v1.0-DeleteMe
deleting tag v1.0-DeleteMe from remote/origin ausing command: git push --delete origin tagName;
To https://github.com/jsticha/pafs
- [deleted] v1.0-DeleteMe
deleting tag v1.0-DeleteMe from local using command: git tag -d tagName;
Deleted tag 'v1.0-DeleteMe' (was 300d3ef22)
请注意,如果您有一个名为远程标记的远程分支,那么这些命令是不明确的:
git push origin :tagname
git push --delete origin tagname
因此,必须使用此命令删除标记:
git push origin :refs/tags/<tag>
这一个删除分支:
git push origin :refs/heads/<branch>
如果没有,则会出现如下错误:
error: dst refspec <tagname> matches more than one.
error: failed to push some refs to '<repo>'
如果您使用SourceTree(一个很棒的Git GUI),那么您可以通过执行以下操作在不使用命令行的情况下轻松完成此操作:
在SourceTree中打开存储库选择并展开左侧的“标签”选项卡右键单击要删除的标记选择“删除YOUR_TAG_NAME”在验证窗口中,选择“从远程设备删除标记”
YOUR_TAG_NAME现在将从您的本地存储库和所有远程设备中删除,无论是GitHub、BitBucket,还是您列为该存储库远程设备的任何地方。
此外,如果您在本地删除了一个标记,但没有在远程源上删除,并且您想在任何地方删除它,那么只需创建一个新标记,该标记具有相同的名称,并在与源相同的提交时附加。然后,重复上述步骤删除所有位置。
推荐文章
- 在单个文件中重新启动/撤消冲突解决方案
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 如何删除多个已删除的文件在Git仓库
- 使用vimdiff查看所有' git diff '
- 如何拉特定的目录与git
- 本地存储库中的文件与源文件之间的差异
- 将Git存储库内容移动到另一个存储库,保存历史记录