一个强大的 Git 工作流自动化工具,简化日常 Git 操作。
- 🏷️ 四段版本号:
major.minor.patch.timestamp格式,自动添加时间戳 - 🎯 交互式选择:Major/Minor/Patch/Bugfix 版本类型
- 📦 语义化版本:完全遵循 SemVer 规范
- 🔄 智能解析:自动识别最新 tag 和前缀模式
- ⬆️ 自动推送:一键推送到远程仓库
- 📋 剪贴板复制:自动复制 tag 名称
- ⚡ 一键提交推送:自动 add、commit 和 push
- 📝 规范化 Commit:支持选择 commit 类型(feat/fix/docs 等)
- 🔍 冲突检测:推送前自动检查代码冲突
- 📊 提交预览:显示待推送的提交列表
- 🛡️ 安全确认:每步操作都有确认
- 🔀 智能合并:自动同步远程状态后合并
- 🎯 交互选择:可交互式选择目标分支
- 🔒 状态检查:确保工作区干净后再合并
- 💡 友好提示:合并后提供后续操作建议
npm install -g git-quick
# 或
yarn global add git-quicknpm install --save-dev git-quick
# 或
yarn add -D git-quickgit-quick tag工具会引导你完成:
- 选择版本类型(Major/Minor/Patch/Bugfix)
- 预览版本变更
- 可选添加 tag 说明
- 确认创建和推送
# Bug 修复(仅更新时间戳)⭐ 最常用
git-quick tag --bugfix
# 创建小版本(Patch)
git-quick tag --patch
# 创建中版本(Minor)
git-quick tag --minor
# 创建大版本(Major)
git-quick tag --major
# 添加 tag 说明
git-quick tag --bugfix --message "修复登录问题"
# 自定义版本前缀
git-quick tag --minor --prefix release-
# 只创建 tag,不推送到远程
git-quick tag --patch --no-push四段版本号:major.minor.patch.timestamp
示例:
v1.2.3.20241208091530- 完整格式v1.2.3.20241208093045- Bug 修复后只更新时间戳
时间戳格式:YYYYMMDDHHmmss(年月日时分秒)
git-quick push智能工作流:
情况 1:有未提交的更改
- 📝 显示待提交的文件列表
- ✅ 确认是否提交
- 🎯 选择 Commit 类型(feat/fix/docs/style 等)
- ✏️ 输入 Commit 信息
- ➕ 自动执行
git add . - 💾 自动执行
git commit - 🔍 检查远程冲突
- ⬆️ 推送到远程
情况 2:已提交但未推送
- 📊 显示待推送的提交列表
- 🔍 检查远程冲突
- ❓ 确认推送
- ⬆️ 推送到远程
情况 3:已同步
- ℹ️ 提示无需推送
工具支持以下标准 Commit 类型:
| 类型 | 图标 | 说明 | 示例 |
|---|---|---|---|
| feat | ✨ | 新功能 | feat: 新增用户管理模块 |
| fix | 🐛 | Bug 修复 | fix: 修复登录失败问题 |
| docs | 📝 | 文档更新 | docs: 更新 API 文档 |
| style | 💄 | 代码格式(不影响功能) | style: 格式化代码 |
| refactor | ♻️ | 代码重构 | refactor: 重构用户服务 |
| perf | ⚡ | 性能优化 | perf: 优化查询速度 |
| test | ✅ | 测试相关 | test: 添加单元测试 |
| chore | 🔧 | 构建/工具/配置变更 | chore: 更新依赖 |
最终生成的 commit 格式:类型: 信息
例如:feat: 新增用户管理功能
git-quick push --force
# 或
git-quick push -fgit-quick merge工具会:
- 显示所有可用分支供选择
- 自动同步本地和远程状态
- 切换到目标分支并执行合并
- 提供后续操作建议
# 将当前分支合并到 main
git-quick merge --target main
# 或简写
git-quick merge -t maingit-quick merge --target main --no-ff这会创建一个合并提交,保留分支历史。
# 1. 修复 bug 后,一键提交推送
git-quick push
# 工具会自动:
# - 显示修改的文件
# - 让你选择 commit 类型(选择 fix)
# - 让你输入 commit 信息(输入:修复登录问题)
# - 自动 add、commit 和 push
# 2. 创建 bugfix tag(只更新时间戳)
git-quick tag --bugfix --message "修复登录问题"
# 完成!版本号从 v1.2.3.20241208091530 变为 v1.2.3.20241208093045# 当前在 feature/user-management 分支
# 1. 一键提交推送
git-quick push
# 选择 feat 类型,输入:新增用户管理功能
# 2. 合并到 main 分支
git-quick merge --target main
# 3. 推送 main 分支
git-quick push
# 4. 创建新版本 tag
git-quick tag --minor --message "新增用户管理功能"# 1. 开发完成,一键提交推送
git-quick push
? 请选择 Commit 类型:
❯ ✨ feat - 新功能
? 请输入 Commit 信息(feat):完成支付模块
✓ 提交成功:feat: 完成支付模块
✓ 成功推送到远程分支 main
# 2. 交互式创建 tag
git-quick tag
? 请选择版本类型:
❯ ● 中版本 (Minor) - 新增功能,向下兼容
📦 版本变更预览:
当前版本:v1.2.3.20241208091530
新版本: v1.3.0.20241208093045
? 是否添加 Tag 说明?Yes
? 请输入 Tag 说明:新增支付模块
? 确认创建并推送到远程 Tag 吗?Yes
✓ Tag v1.3.0.20241208093045 创建成功
✓ 已推送到远程仓库
✓ 已复制到剪贴板| 类型 | 版本变化 | 使用场景 | 示例 |
|---|---|---|---|
| Bugfix | 仅更新时间戳 | 快速 bug 修复 | 1.2.3.20241208091530 → 1.2.3.20241208093045 |
| Patch | 小版本+1 | 向下兼容的 bug 修复 | 1.2.3.xxx → 1.2.4.yyy |
| Minor | 中版本+1 | 新增功能,向下兼容 | 1.2.3.xxx → 1.3.0.yyy |
| Major | 大版本+1 | 不兼容的 API 变更 | 1.2.3.xxx → 2.0.0.yyy |
| 选项 | 说明 |
|---|---|
--bugfix |
创建 Bugfix 版本(仅更新时间戳) |
--patch |
创建小版本(Patch) |
--minor |
创建中版本(Minor) |
--major |
创建大版本(Major) |
--prefix <prefix> |
指定版本前缀(默认保持当前或使用 v) |
--no-push |
只创建 tag,不推送到远程 |
--message <msg> |
添加 tag 说明信息 |
| 选项 | 说明 |
|---|---|
-f, --force |
强制推送(覆盖远程历史) |
| 选项 | 说明 |
|---|---|
-t, --target <branch> |
指定目标分支(不指定则交互选择) |
--no-ff |
不使用快进合并,创建合并提交 |
所有命令都会进行以下检查:
- ✅ 验证是否在 Git 仓库中
- ✅ 检查是否有远程仓库
- ✅ 确保工作区干净(merge/push)
- ✅ 检查代码冲突(push)
- ✅ 同步远程最新状态(merge)
- ✅ Tag 不重复(tag)
# 开发完成后,只需两个命令!
git-quick push # 自动 add、commit(选择类型和输入信息)、push
git-quick tag --bugfix # 打 bugfix tag
# 就这么简单!# 在功能分支开发
git checkout -b feature/new-feature
# 开发完成
git-quick push # 自动 add、commit、push
# 合并到主分支
git-quick merge -t main
# 推送 main
git-quick push
# 打标签
git-quick tag --minor# 使用 git-quick push 可以强制团队使用规范的 commit 格式
git-quick push
# 所有提交都会是:
# feat: xxx
# fix: xxx
# docs: xxx
# 等标准格式
# 便于后续生成 changelog 和版本管理- Bugfix:只更新时间戳,适合快速修复。版本号保持不变,只有时间戳变化。
- Patch:小版本号+1,适合正式的 bug 修复发布。
git tag -l -n # 查看所有 tag 及说明不会。只有当工作区有未提交的更改时,才会引导你输入 commit 信息。
如果你已经手动 commit 了,git-quick push 会直接推送,不会修改你的 commit。
如果你更喜欢传统方式:
# 传统方式
git add .
git commit -m "your message"
git-quick push # 只推送,不会再次提交
# 或使用原生 git push
git push工具会中断操作并提示:
1. git pull
2. 解决冲突文件
3. git add .
4. git commit
5. 再次运行 git-quick pushgit merge --abort # 放弃合并使用本地时区。例如北京时间(UTC+8)。
# 删除本地 tag
git tag -d v1.2.3.20241208091530
# 删除远程 tag
git push origin :refs/tags/v1.2.3.20241208091530检查仓库 → 拉取最新代码 → 解析最新 tag →
选择版本类型 → 生成新版本号 → 添加时间戳 →
创建 tag → 推送到远程 → 复制到剪贴板
检查仓库 → 检查工作区状态 →
[如有未提交更改] 显示文件 → 选择commit类型 → 输入信息 → add → commit →
检查待推送提交 → 拉取远程状态 → 检查冲突 →
显示提交列表 → 确认 → 推送
检查仓库 → 检查工作区 → 同步远程 →
选择目标分支 → 同步目标分支 → 切换分支 →
执行合并 → 提供后续建议
欢迎提交 Issue 和 Pull Request!
MIT License
Enjoy! 🎉