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 "清除结束";

 

如何执行

  1. 在本地创建一个脚本,把上面的代码复制进去。例如创建一个delete.sh的文件
  2. 同级目录下git clone 项目

执行命令

bash ./delete.sh 项目名

原文地址:https://zhuanlan.zhihu.com/p/312996841

 

以上是关于gitlab 清理指定时间前的,merge的早期分支的主要内容,如果未能解决你的问题,请参考以下文章

gitlab 清理指定时间前的,merge的早期分支

gitlab 清理指定时间前的,merge的早期分支

gitlab怎么创建merge request

zabbix自动清理30天前的数据

gitlab 自动备份与清理

7.GitLab 创建 merge request