⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 juejin.cn/post/7494650842701873163 「七月丶」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

工作中你有没有遇到过这种情况:

某个功能写了一堆 commit,最后要上线前合并成一个。每次都要输入这一长串命令:

git reset --soft HEAD~2 && git commit --edit -m "<msg>" --no-verify

要么输错,要么复制粘贴,很烦很低效。

于是我干脆搞了个自己的 Git 命令行工具 —— gix,一键解决这些重复操作,体验丝滑不止一点点。

这篇文章就是我开发这个工具的起点:从痛点出发,到最小可用版本上线,再到未来的功能扩展,一步步落地。

痛点:重复的 Git 操作太机械

我们团队在提交代码时有一些默认规范,比如:

  • 提交前先 squash 掉多余的 commit
  • commit message 按照格式书写
  • 保持提交历史整洁

但是这些事情:

  • Git 本身不智能,你只能记住或保存那些命令
  • 重复性高,每个功能分支可能都要做一遍
  • 容易出错,命令输错一个参数就得翻车

举个例子,我之前经常得输入下面这段命令来 squash 最近两个提交:

git reset --soft HEAD~2 && git commit --edit -m "feat: 优化主题切换逻辑" --no-verify

这段命令熟是熟了,但每次都要想一下、改一下 message、还要加 --no-verify……真的烦。

解法:做一个自己的 Git 命令行工具

于是我就动手搞了一个 CLI 工具,名字就叫 gix —— git 扩展工具的意思。

它的目标非常简单:

用一句 gix squash 命令,干掉所有重复操作。

现在 gix 已经支持多个高频 Git 操作,后续还会不断扩展。

项目结构:Monorepo 模式开发 CLI

我用的是 TurboRepo + pnpm 做 monorepo,结构如下:

/gix
├── packages
│ ├── cli # 核心 CLI 命令模块
│ └── docs # 文档站点(VuePress)
├── .gitignore
├── turbo.json
└── package.json

技术选型:

部分 技术 理由
CLI 开发 Node.js + Commander + Prompts 快速开发,交互体验好
项目结构 Monorepo + TurboRepo 模块清晰,依赖统一管理
文档网站 VuePress 写文档简单,样式可自定义

功能速览与使用方式

以下是目前 gix 支持的几个核心功能👇

gix merge: 交互式合并任意两个提交

gix merge

会提示你输入:

  • 起始和结束的 commit(可选)
  • 新的 commit 信息
  • 是否强制推送

也可以直接指定:

gix merge -f <from> -m "feat: 合并优化配置文件逻辑"

gix squash: 快速合并最近 N 次提交

gix squash -n 3       # 合并最近 3 次提交
gix squash --all # 从第一个提交开始合并(全量 squash)

gix doctor: 诊断 Git 仓库状态

gix doctor

会检查:

  • 当前是否为 Git 仓库
  • 当前是否干净(无修改未提交)
  • 当前 Git 分支状态
  • 是否配置远程仓库
  • Git / Node.js 版本

gix reset: 软重置到远程分支

gix reset

等价于:

git reset --soft origin/your-branch

保留所有本地变更,仅撤销本地 commit,适合重开合并、重提 PR 等场景。

项目地址

https://github.com/nianyi778/gix-cli

文章目录
  1. 1. 痛点:重复的 Git 操作太机械
  2. 2. 解法:做一个自己的 Git 命令行工具
  3. 3. 项目结构:Monorepo 模式开发 CLI
  4. 4. 功能速览与使用方式
    1. 4.0.1. 项目地址