
从 Git 操作痛点出发,我为什么开发了 gix?
工作中你有没有遇到过这种情况:
某个功能写了一堆 commit,最后要上线前合并成一个。每次都要输入这一长串命令:
git reset --soft HEAD~2 && git commit --edit -m "" --no-verify
要么输错,要么复制粘贴,很烦很低效。
于是我干脆搞了个自己的 Git 命令行工具 —— gix,一键解决这些重复操作,体验丝滑不止一点点。
这篇文章就是我开发这个工具的起点:从痛点出发,到最小可用版本上线,再到未来的功能扩展,一步步落地。
痛点:重复的 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
技术选型:
| | |
---|
| Node.js + Commander + Prompts | |
| | |
|
| |
功能速览与使用方式
以下是目前 gix 支持的几个核心功能👇
gix merge: 交互式合并任意两个提交
gix merge
会提示你输入:
也可以直接指定:
gix merge -f -m "feat: 合并优化配置文件逻辑"
gix squash: 快速合并最近 N 次提交
gix squash -n 3 # 合并最近 3 次提交
gix squash --all # 从第一个提交开始合并(全量 squash)
gix doctor: 诊断 Git 仓库状态
gix doctor
会检查:
gix reset: 软重置到远程分支
gix reset
等价于:
git reset --soft origin/your-branch
保留所有本地变更,仅撤销本地 commit,适合重开合并、重提 PR 等场景。
项目地址
https://github.com/nianyi778/gix-cli
来源:juejin.cn/post/7494650842701873163
后端专属技术群构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!
文明发言,以交流技术
、职位内推
、
行业探讨
为主
广告人士勿入,切勿轻信私聊,防止被骗
加我好友,拉你进群点下方的“❤”支持我们,非常感谢!