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

如何创建自定义git/bash脚本实现git recent查看最近切换分支功能?

实现自定义 git recent 命令方案

方法一:通过Git别名实现(最简便)

直接在终端运行以下命令即可完成全局配置:

git config --global alias.recent '!f() { local count=${1:-5}; git reflog | egrep -io "moving from ([^[:space:]]+)" | awk '\''{ print $3 }'\'' | awk '\''!x[$0]++'\'' | egrep -v "^[a-f0-9]{40}$" | head -n$count; }; f'

配置完成后即可直接使用:

  • 运行git recent默认返回最近切换的5个分支
  • 运行git recent 20返回最近切换的20个分支,参数可自定义为任意数值

提示:如果后续需要删除该别名,运行 git config --global --unset alias.recent 即可。

方法二:通过独立脚本实现(适合后续扩展复杂逻辑)

如果后续要给该命令增加更多功能,推荐用独立脚本的方式实现:

  • 在$PATH包含的目录(例如~/.local/bin)下新建名为git-recent的文件
  • 写入以下代码:
#!/bin/bash
# 自定义git命令:查看最近切换的分支
count=${1:-5}
git reflog | egrep -io "moving from ([^[:space:]]+)" | awk '{ print $3 }' | awk ' !x[$0]++' | egrep -v '^[a-f0-9]{40}$' | head -n$count
  • 给文件添加执行权限:chmod +x ~/.local/bin/git-recent
  • 配置完成后即可全局调用git recent命令,参数规则和别名方案完全一致。
脚本运行原理解析

你提供的命令是通过管道串联多个工具实现需求,每段命令的作用如下:

  • git reflog:输出Git本地引用日志,记录了所有分支切换、提交、重置等操作的历史记录
  • egrep -io "moving from ([^[:space:]]+)":用正则匹配所有分支切换操作产生的moving from 分支名记录,i参数忽略大小写,o参数只输出匹配到的内容
  • awk '{ print $3 }':按空格分割每行内容,输出第三段,也就是切换前的分支名
  • awk ' !x[$0]++':对输出的分支名去重,保留第一次出现的顺序,也就是按最近使用的先后排序
  • egrep -v '^[a-f0-9]{40}$':过滤掉40位的Git commit哈希值,只保留可读的分支名
  • head -n$count:取前count条结果,count默认值为5,支持传入自定义数值调整返回条数
Bash脚本与Git自定义命令学习建议
  • 先掌握Shell基础语法:重点学习变量定义、位置参数传递、管道符、重定向的用法,以及grep、awk、sed三个文本处理工具的常用功能,即可满足绝大多数日常自定义小工具的开发需求
  • 再深入Git高级特性:学习Git引用存储逻辑、reflog的作用、自定义Git命令的两种实现规则,可扩展更多提升工作效率的Git专属操作
  • 最后通过实战进阶:从实现小功能入手,比如批量处理Git仓库、自动打包部署脚本、文件批量重命名工具等,逐步掌握条件判断、循环、函数等Bash复杂语法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:27:03