Py学习  »  Git

扔掉复杂的Git命令!造了个gix:极简交互,效率翻番

Python见习室 • 1 年前 • 482 次点击  

来源:juejin.cn/post/7494650842701873163

👉 欢迎加入小哈的星球,你将获得: 专属的项目实战(多个项目) / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《Spring AI 项目实战》正在更新中..., 基于 Spring AI + Spring Boot 3.x + JDK 21;
  • 《从零手撸:仿小红书(微服务架构)》 已完结,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17..., 点击查看项目介绍 演示地址:http://116.62.199.48:7070/
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2期已完结,演示链接:http://116.62.199.48/;
  • 专栏阅读地址:https://www.quanxiaoha.com/column

截止目前,累计输出 90w+ 字,讲解图 3713+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,戳我加入学习,解锁全部项目,已有3300+小伙伴加入

从 Git 操作痛点出发,我为什么开发了 gix?

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

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

git reset --soft HEAD~2 && git commit --edit -m "" --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  -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


👉 欢迎加入小哈的星球,你将获得:  专属的项目实战(多个项目) / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《Spring AI 项目实战》正在更新中..., 基于 Spring AI + Spring Boot 3.x + JDK 21;
  • 《从零手撸:仿小红书(微服务架构)》 已完结,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17..., 点击查看项目介绍演示地址:http://116.62.199.48:7070/
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2期已完结,演示链接:http://116.62.199.48/;
  • 专栏阅读地址:https://www.quanxiaoha.com/column

截止目前,累计输出 90w+ 字,讲解图 3713+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,Spring Cloud Alibaba 等等,戳我加入学习,解锁全部项目,已有3300+小伙伴加入

1.  我的私密学习小圈子,从0到1手撸企业实战项目~

2. 微软重磅开源 Copilot!64 岁 VS Code 创始人亲口承认:眼红 Cursor,但真正价值在后端,它“抄”不过去!

3. 公司Rust团队全员被裁,只因把服务写得「太稳定」:“项目0故障、0报警,那养着3个Rust工程师没用啊”

4. Facebook 为什么要弃用 Git?

最近面试BAT,整理一份面试资料Java面试BATJ通关手册,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点“在看”,关注公众号并回复 Java 领取,更多内容陆续奉上。

PS:因公众号平台更改了推送规则,如果不想错过内容,记得读完点一下在看,加个星标,这样每次新文章推送才会第一时间出现在你的订阅列表里。

“在看”支持小哈呀,谢谢啦

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/183044