You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Git仓库中近2个月未活跃分支及特定分支提交日期

Git仓库清理:筛选旧分支、查询分支提交日期及脚本实现

一、筛选近2个月未提交的分支

利用git for-each-ref输出可计算的Unix时间戳,结合日期对比就能精准筛选出超过2个月未提交的分支:

  1. 先计算2个月前的Unix时间戳:
    # Linux系统
    two_months_ago=$(date -d "2 months ago" +%s)
    # macOS系统替换为:
    # two_months_ago=$(date -v-2m +%s)
    
  2. 执行筛选命令(支持bare仓库):
    git for-each-ref --sort=committerdate refs/heads/ \
      --format='%(refname:short) %(committerdate:unix)' |
      awk -v cutoff="$two_months_ago" '$2 < cutoff {print $1}'
    
    逻辑说明:%(refname:short)输出分支名,%(committerdate:unix)输出提交时间戳,通过awk对比时间戳,仅输出符合条件的分支名。

二、查询特定分支的最后提交日期

有两种简单方式:

  1. 用git log快速查看(支持多种日期格式):
    # ISO标准日期格式
    git log -1 --format="%ci" <分支名>
    # 相对时间格式(如"3 months ago")
    git log -1 --format="%cr" <分支名>
    
  2. 用git for-each-ref精准获取提交者日期:
    git for-each-ref refs/heads/<分支名> --format='%(committerdate)'
    # 如需Unix时间戳:
    # git for-each-ref refs/heads/<分支名> --format='%(committerdate:unix)'
    

三、完整仓库清理bash脚本

脚本包含克隆远程仓库、筛选旧分支、确认删除等步骤,避免误删:

#!/bin/bash

REMOTE_URL="你的远程仓库地址"
TMP_DIR="tmp/tmp-location"
# 计算2个月前时间戳(Linux),macOS替换为date -v-2m +%s
TWO_MONTHS_AGO=$(date -d "2 months ago" +%s)

# 创建临时目录并克隆bare仓库
mkdir -p tmp
git clone -q --depth 1 --bare --no-single-branch "$REMOTE_URL" "$TMP_DIR" || {
  echo "克隆仓库失败"
  exit 1
}

cd "$TMP_DIR" || {
  echo "进入临时目录失败"
  exit 1
}

# 获取符合条件的旧分支列表
OLD_BRANCHES=$(git for-each-ref --sort=committerdate refs/heads/ \
  --format='%(refname:short) %(committerdate:unix)' |
  awk -v cutoff="$TWO_MONTHS_AGO" '$2 < cutoff {print $1}')

if [ -z "$OLD_BRANCHES" ]; then
  echo "没有超过2个月未提交的分支"
  cd ../..
  rm -rf "$TMP_DIR"
  exit 0
fi

echo "找到以下超过2个月未提交的分支:"
echo "$OLD_BRANCHES"

# 确认删除操作
read -p "是否要删除这些分支?(y/N) " CONFIRM
if [[ "$CONFIRM" != "y" && "$CONFIRM" != "Y" ]]; then
  echo "取消删除操作"
  cd ../..
  rm -rf "$TMP_DIR"
  exit 0
fi

# 逐一删除远程分支
for BRANCH in $OLD_BRANCHES; do
  echo "正在删除分支 $BRANCH..."
  git push origin --delete "$BRANCH"
done

# 清理临时文件
cd ../..
rm -rf "$TMP_DIR"

echo "旧分支删除完成"

内容的提问来源于stack exchange,提问作者Pigeonman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:42:44