一个基于 Go 语言开发的智能代码合并工具,通过自动化 cherry-pick 流程,将原本繁琐的多分支、多项目代码合并工作化繁为简,每周为开发者节约宝贵的时间。
Gitx 旨在解决日常开发中频繁出现的、涉及多个分支和项目的代码合并痛点。传统合并流程需要重复执行 7 个步骤(如检出分支、创建临时分支、cherry-pick 代码、推送、创建 MR 等),在多分支(如 dev、qa、staging、v6.0、v6.1、v6.2)和多项目(A、B、C)场景下,需执行 6×3=18 次重复操作,耗时 36+ 分钟。Gitx 通过一键命令,自动化完成所有这些步骤,将效率提升到极致。
| 命令 | 作用 |
|---|---|
| push | cherry-pick 方式自动化推送合并代码 |
| hook | 通过 Hook 触发 Jenkins 等 CI/CD 工具 |
| info | 打印当前项目仓库信息 |
| jira | 管理和打印 Jira 相关提交信息 |
| init | 初始化项目配置文件 |
| pull | 拉取代码(补充完整命令说明) |
核心思想:以 Jira 任务为中心,批量自动化处理代码合并流程
- 开发分支:
VM-2003_Tpsc_Migrate_develop - 目标:合并到
staging分支
- 拉取最新代码:自动拉取目标分支(staging)的最新代码
- 创建临时分支:基于最新目标分支创建临时分支(
VM-2003_Tpsc_Migrate_staging) - 智能 cherry-pick:通过 Jira ID 匹配筛选相关 commit,自动合并到临时分支
- 自动推送:将临时分支推送到远程仓库
- 自动创建 MR:调用 GitLab API 自动创建 Merge Request
- 自动合并 MR:(可选)配置后可自动合并 MR
go install github.com/goeoeo/gitx@latestsudo wget -O /usr/local/bin/gitx "https://github.com/goeoeo/gitx/releases/download/v0.0.1/gitx_$(uname -s)_$(uname -m)" && sudo chmod +x /usr/local/bin/gitx- Mac 系统:如果遇到无法打开的错误,需要在
系统设置 -> 隐私与安全中授权
gitx initvim ~/.patch/config.yaml将当前分支中的 commit 推送到 dev 和 qa 分支:
gitx push -b dev,qa指定 Jira ID 推送:
gitx push -b dev,qa -j VM-8888gitx push -b dev,qa -p common,ws,fggitx push -b dev,qagitx jira -a cleargitx -h可以将清理分支命令配置为定时任务:
crontab -e添加以下内容,每天 17:05 自动清理:
5 17 * * * /usr/local/bin/gitx jira -a=clear- 使用 IDE 解决冲突
- 执行
git cherry-pick --continue - 输入
y继续执行
gitx/
├── main.go # 程序入口
├── cmd/ # 命令包
│ ├── push.go # push 命令实现
│ ├── jira.go # jira 命令实现
│ ├── init.go # init 命令实现
│ ├── hook.go # hook 命令实现
│ ├── info.go # info 命令实现
│ └── config.yaml # 配置模板
├── controller/ # 控制器层
│ └── jira.go
├── model/ # 数据模型
├── repo/ # Git 仓库操作
├── util/ # 工具函数
│ ├── git.go
│ └── util.go
├── LICENSE
├── Makefile
└── README.md
- 语言:Go
- 依赖:
- cobra:命令行框架
- logrus:日志库
- 原生 Git 命令集成
- 支持平台:
- 所有 Linux 发行版
- macOS
- Windows (待测试)
| 操作场景 | 手动操作耗时 | Gitx 操作耗时 | 效率提升 |
|---|---|---|---|
| 单项目+单分支合并 | 2 分钟 | 10 秒 | 12x |
| 多项目(A,B,C)+多分支(v6.0,v6.1,v6.2) | 36 分钟 | 2 分钟 | 18x |
- Fork 项目
- 创建功能分支
- 提交更改
- 推送到远程分支
- 创建 Pull Request
MIT License
如果您有问题或建议,请在 GitHub Issues 中提出。
如果这个项目帮助到了你,请给一个 Star ⭐!