社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

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

Java知音 • 2 周前 • 55 次点击  
图片

从 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

juejin.cn/post/7494650842701873163

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/182805
 
55 次点击