gitlab 清理指定时间前的,merge的早期分支
Posted 凌_风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gitlab 清理指定时间前的,merge的早期分支相关的知识,希望对你有一定的参考价值。
由于分支管理的问题,导致gitlab上面堆积了许多无用的分支。
gitlab上面也不好操作,我们可以借助git客户端来删除远程分支
需要删除哪些分支
指定时间 + merged合并过的代码
Shell脚本如下
cat delete.sh
#!/bin/bash
# 批量删除远程分支 shell script
reponsitory_name="$1"
echo "您即将删除【"$reponsitory_name"】下的分支,请先找其他人备份好,以免误删!!!!";
echo " "
cd $reponsitory_name;
git checkout master
for branch in `git branch -r --merged | grep -v HEAD`;
do
# 分支名称
simple_name=`echo $branch |grep '/' | cut -d '/' -f 2`;
# 切换到分支
git checkout $simple_name
# 分支最后提交时间
branch_timestamp=`git show --format="%at" |head -n 1`;
# 当前系统时间
cur_sec_and_ns=`date '+%s-%N'`;
cur_sec=$cur_sec_and_ns%-*;
# 时间差
time_different=$[cur_sec-$branch_timestamp];
# 阈值,这里清理30天前
time_require=$[3600*24*30];
echo 最后提交$branch_timestamp 分支$simple_name 时间差$time_different
if [[ "" != "$simple_name"
&& "HEAD" != "$simple_name"
&& "master" != "$simple_name"
&& $time_different -ge $time_require
]]; then
echo 分支$simple_name 最后提交时间$branch_timestamp
printf "\\033[1;33m正在删除当前分支:`git show --format="%ci %cr" $branch | head -n 1` $simple_name \\033[0m \\n"
local_result=`git branch -d $simple_name`
remote_result=`git push origin :$simple_name`
echo "result:" $local_result $remote_result;
# git push origin --delete dev_s # dev_s是你要删的远端分支
# git branch -d dev # dev是你的本地分支
echo "删除当前分支结束"
echo ""
else
printf "\\033[1;31m当前分支:`git show --format="%ci %cr" $branch | head -n 1` $simple_name \\033[0m \\n"
fi
done
echo "清除结束";
如何执行
- 在本地创建一个脚本,把上面的代码复制进去。例如创建一个delete.sh的文件
- 同级目录下git clone 项目
执行命令
bash ./delete.sh 项目名
原文地址:https://zhuanlan.zhihu.com/p/312996841
以上是关于gitlab 清理指定时间前的,merge的早期分支的主要内容,如果未能解决你的问题,请参考以下文章