自动从git repo中删除所有测试标签

时间:2014-06-11 08:49:17

标签: git bash

我想删除生产git repo中包含" _TEST"的标签的所有标签。

#!/bin/bash
COMMITS_TO_REMOVE=$(git ls-remote git@github.com:REPONAME | grep _test | cut -f1)
COMMITS_TO_REMOVE_NO_CRLF=$(echo "$COMMITS_TO_REMOVE" | tr '\n' ' ')
for c in $COMMITS_TO_REMOVE_NO_CRLF 
do
    git tag -d $c;
    git push origin $c;
done;

但:

1)COMMITS_TO_REMOVE_NO_CRLF在运行"对于c中的空格时不被空格分割..."

2)当我试图推回标签时,它没有采取。

想法?

1 个答案:

答案 0 :(得分:1)

您不需要COMMITS_TO_REMOVE_NO_CRLF,bash将换行符视为空格。

您可以删除标记,并且至少从1.7开始,使用xargs批量推送删除。

结合,

commits=$(git ls-remote $remote | sed -n '/_test[^^]*$/ s,.*refs/tags/,,p')
echo "$commits" | xargs tag -d
echo "$commits" | xargs git push --delete git@github.com:repo