#!/bin/bash
##################################################################
# 使用前确保服务器装有git,最好预设号git账户和密码,请谨慎操作。 #
# Author:Jack.zhou #
# email : 1277109646@qq.com #
##################################################################
temFilePath=/home/deleteTagTemp
#剩多少个
number=3
#创建临时目录
cd /home
mkdir deleteTagTemp
echo "请输入github远程仓库路径(例如:https://github.com/xxx/central-ls-service.git)"
echo -n "输入:"
read confirm
cd $temFilePath
echo -e "\033[44;37;5m 下载仓库到服务器 \033[0m YAMIBUY"
git clone $confirm
path=`ls`
echo "进入项目目录" $path
cd $path
echo -e "\033[44;37;5m 切换到主分支 master! \033[0m YAMIBUY"
git checkout master
line=`git tag -l | wc -l`
echo "总共tag数:" $line
if [ "$line" -gt $number ]
then
while [ "$line" -gt $number ]
do
#列转行然后一次awk切割循环删除第一个
tag=`git tag -l | awk '{for(i=1;i<=NF;i++)a[NR,i]=$i}END{for(j=1;j<=NF;j++)for(k=1;k<=NR;k++)printf k==NR?a[k,j] RS:a[k,j] FS}'`
echo "全部tag列转行后的结果:" $tag
deleteTag=`echo $tag | awk -F ' ' '{print $1}'`
echo "本次需要删除的tag为:" $deleteTag
echo -e "\033[44;37;5m 执行删除命令! \033[0m YAMIBUY"
echo "删除本地Tag!"
git tag -d $deleteTag
echo "删除远程Tag!"
git push origin :refs/tags/$deleteTag
line=`git tag -l | wc -l`
echo "剩余tag数:" $line
done
echo -e "\033[44;37;5m 删除tag至只剩${number}个完毕! \033[0m YAMIBUY"
else
echo -e "\033[44;37;5m tag总数小于${number}个不用删除! \033[0m YAMIBUY"
fi
#删除仓库
rm $temFilePath/* -rf
exit
##################################################################
# 使用前确保服务器装有git,最好预设号git账户和密码,请谨慎操作。 #
# Author:Jack.zhou #
# email : 1277109646@qq.com #
##################################################################
temFilePath=/home/deleteTagTemp
#剩多少个
number=3
#创建临时目录
cd /home
mkdir deleteTagTemp
echo "请输入github远程仓库路径(例如:https://github.com/xxx/central-ls-service.git)"
echo -n "输入:"
read confirm
cd $temFilePath
echo -e "\033[44;37;5m 下载仓库到服务器 \033[0m YAMIBUY"
git clone $confirm
path=`ls`
echo "进入项目目录" $path
cd $path
echo -e "\033[44;37;5m 切换到主分支 master! \033[0m YAMIBUY"
git checkout master
line=`git tag -l | wc -l`
echo "总共tag数:" $line
if [ "$line" -gt $number ]
then
while [ "$line" -gt $number ]
do
#列转行然后一次awk切割循环删除第一个
tag=`git tag -l | awk '{for(i=1;i<=NF;i++)a[NR,i]=$i}END{for(j=1;j<=NF;j++)for(k=1;k<=NR;k++)printf k==NR?a[k,j] RS:a[k,j] FS}'`
echo "全部tag列转行后的结果:" $tag
deleteTag=`echo $tag | awk -F ' ' '{print $1}'`
echo "本次需要删除的tag为:" $deleteTag
echo -e "\033[44;37;5m 执行删除命令! \033[0m YAMIBUY"
echo "删除本地Tag!"
git tag -d $deleteTag
echo "删除远程Tag!"
git push origin :refs/tags/$deleteTag
line=`git tag -l | wc -l`
echo "剩余tag数:" $line
done
echo -e "\033[44;37;5m 删除tag至只剩${number}个完毕! \033[0m YAMIBUY"
else
echo -e "\033[44;37;5m tag总数小于${number}个不用删除! \033[0m YAMIBUY"
fi
#删除仓库
rm $temFilePath/* -rf
exit