jor*_*hmv 7 git github github-api git-tag
我正在尝试删除GitHub中的Release,所以我正在做
git tag -d {release-tag-name}
git push origin :{release-tag-name}
Run Code Online (Sandbox Code Playgroud)
这将删除标签(本地和远程),但它Draft在GitHub中留下了我也想要删除的版本.
我可以通过登录到GitHub并单击删除按钮来删除它,但我想避免通过网站这样做.
是否有命令实现这一目标?我发现了一些关于删除标签的其他类似帖子,但他们最终都会去GitHub删除标签Draft.
编辑
在这个问题的接受答案中,第2步和第5步与我的问题有关.步骤2说,This will turn your "Release" on GitHub into a Draft that you can later delete.虽然步骤5指示删除GitHub站点中的草稿,而不是通过命令.
由于@GabLeRoux 指出hub现在包括删除版本的功能,并且可以根据我们的意愿列出草稿和格式化输出,因此我编写了以下内容以从我们的存储库中删除所有草稿版本:
hub release -f "%T (%S) %n" --include-drafts | grep " (draft)" | awk '{print $1}' | xargs -t -n1 hub release delete
打破这个:
hub release -f "%T (%S) %n" --include-drafts:打印所有版本,如果它们具有“草稿”或“预发布”等状态,则将该状态放在括号内。你最终会得到这样的输出:
release-name-1 ()
release-name-2 ()
release-name-3 (draft)
release-name-4 ()
release-name-5 (draft)
release-name-6
Run Code Online (Sandbox Code Playgroud)
现在通过管道将其导入,| grep " (draft)"以便我们只打印带有(draft)以下内容的行:
release-name-3 (draft)
release-name-5 (draft)
Run Code Online (Sandbox Code Playgroud)
现在,对于这些行中的每一行,将其管道化为| awk '{print $1}'仅取第一部分(在第一个空格之前)。(如果任何版本的名称中有空格,这将不起作用):
release-name-3
release-name-5
Run Code Online (Sandbox Code Playgroud)
现在将所有这些草案版本名称通过管道传输到xargs -t -n1 hub release delete,这将调用hub release delete <RELEASE_NAME_HERE>每一行输入:
hub release delete release-name-3
hub release delete release-name-5
Run Code Online (Sandbox Code Playgroud)
(对于那些 xargs 参数:-t首先回显命令,并-n1告诉它hub为每一行输入单独调用。)
如果你想慢一点,看看它认为应该删除哪些草稿版本,只需运行以下部分:
hub release -f "%T (%S) %n" --include-drafts | grep " (draft)" | awk '{print $1}'
如果你想运行得非常慢,将-p作为参数添加到 xargs,它会在运行每个命令之前提示你。
发布不是git CLI可以帮助您的.
发布是GitHub特有的东西.
您可以使用GitHub API来创建/更新/删除版本.
DELETE /repos/:owner/:repo/releases/:id
Run Code Online (Sandbox Code Playgroud)
如果您想自动与GitHub API进行交互,您可以执行以下操作:
例如,在这种情况下,您可以使用一个脚本删除本地标记,调用API以按名称获取标记ID ,删除远程标记并删除版本.
| 归档时间: |
|
| 查看次数: |
2382 次 |
| 最近记录: |