Skip to content

Zsilin/git-quick

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Git Quick

一个强大的 Git 工作流自动化工具,简化日常 Git 操作。

✨ 特性

Tag 管理

  • 🏷️ 四段版本号major.minor.patch.timestamp 格式,自动添加时间戳
  • 🎯 交互式选择:Major/Minor/Patch/Bugfix 版本类型
  • 📦 语义化版本:完全遵循 SemVer 规范
  • 🔄 智能解析:自动识别最新 tag 和前缀模式
  • ⬆️ 自动推送:一键推送到远程仓库
  • 📋 剪贴板复制:自动复制 tag 名称

Push 命令

  • 一键提交推送:自动 add、commit 和 push
  • 📝 规范化 Commit:支持选择 commit 类型(feat/fix/docs 等)
  • 🔍 冲突检测:推送前自动检查代码冲突
  • 📊 提交预览:显示待推送的提交列表
  • 🛡️ 安全确认:每步操作都有确认

Merge 命令

  • 🔀 智能合并:自动同步远程状态后合并
  • 🎯 交互选择:可交互式选择目标分支
  • 🔒 状态检查:确保工作区干净后再合并
  • 💡 友好提示:合并后提供后续操作建议

📦 安装

全局安装

npm install -g git-quick
#
yarn global add git-quick

项目中安装

npm install --save-dev git-quick
#
yarn add -D git-quick

🎯 使用方法

命令 1:Tag 管理

交互式创建 Tag

git-quick tag

工具会引导你完成:

  1. 选择版本类型(Major/Minor/Patch/Bugfix)
  2. 预览版本变更
  3. 可选添加 tag 说明
  4. 确认创建和推送

命令行参数

# 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(年月日时分秒)

命令 2:Push(一键提交推送)

基础用法

git-quick push

智能工作流

情况 1:有未提交的更改

  1. 📝 显示待提交的文件列表
  2. ✅ 确认是否提交
  3. 🎯 选择 Commit 类型(feat/fix/docs/style 等)
  4. ✏️ 输入 Commit 信息
  5. ➕ 自动执行 git add .
  6. 💾 自动执行 git commit
  7. 🔍 检查远程冲突
  8. ⬆️ 推送到远程

情况 2:已提交但未推送

  1. 📊 显示待推送的提交列表
  2. 🔍 检查远程冲突
  3. ❓ 确认推送
  4. ⬆️ 推送到远程

情况 3:已同步

  • ℹ️ 提示无需推送

Commit 类型说明

工具支持以下标准 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 -f

⚠️ 警告:强制推送会覆盖远程历史,请谨慎使用!

命令 3:Merge(分支合并)

交互式合并

git-quick merge

工具会:

  1. 显示所有可用分支供选择
  2. 自动同步本地和远程状态
  3. 切换到目标分支并执行合并
  4. 提供后续操作建议

指定目标分支

# 将当前分支合并到 main
git-quick merge --target main

# 或简写
git-quick merge -t main

不使用快进合并

git-quick merge --target main --no-ff

这会创建一个合并提交,保留分支历史。

📖 完整示例

场景 1:快速 Bug 修复(最常用)⭐

# 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

场景 2:功能分支合并到主分支

# 当前在 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 "新增用户管理功能"

场景 3:发布新版本(完整流程)

# 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.202412080915301.2.3.20241208093045
Patch 小版本+1 向下兼容的 bug 修复 1.2.3.xxx1.2.4.yyy
Minor 中版本+1 新增功能,向下兼容 1.2.3.xxx1.3.0.yyy
Major 大版本+1 不兼容的 API 变更 1.2.3.xxx2.0.0.yyy

⚙️ 命令行选项

git-quick tag

选项 说明
--bugfix 创建 Bugfix 版本(仅更新时间戳)
--patch 创建小版本(Patch)
--minor 创建中版本(Minor)
--major 创建大版本(Major)
--prefix <prefix> 指定版本前缀(默认保持当前或使用 v
--no-push 只创建 tag,不推送到远程
--message <msg> 添加 tag 说明信息

git-quick push

选项 说明
-f, --force 强制推送(覆盖远程历史)

git-quick merge

选项 说明
-t, --target <branch> 指定目标分支(不指定则交互选择)
--no-ff 不使用快进合并,创建合并提交

🛡️ 安全检查

所有命令都会进行以下检查:

  • ✅ 验证是否在 Git 仓库中
  • ✅ 检查是否有远程仓库
  • ✅ 确保工作区干净(merge/push)
  • ✅ 检查代码冲突(push)
  • ✅ 同步远程最新状态(merge)
  • ✅ Tag 不重复(tag)

💡 最佳实践

1. 日常开发工作流(超简单)⭐

# 开发完成后,只需两个命令!
git-quick push          # 自动 add、commit(选择类型和输入信息)、push
git-quick tag --bugfix  # 打 bugfix tag

# 就这么简单!

2. 功能分支工作流

# 在功能分支开发
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

3. 规范化团队 Commit

# 使用 git-quick push 可以强制团队使用规范的 commit 格式
git-quick push

# 所有提交都会是:
# feat: xxx
# fix: xxx
# docs: xxx
# 等标准格式

# 便于后续生成 changelog 和版本管理

❓ 常见问题

Q1: Bugfix 和 Patch 的区别?

  • Bugfix:只更新时间戳,适合快速修复。版本号保持不变,只有时间戳变化。
  • Patch:小版本号+1,适合正式的 bug 修复发布。

Q2: 如何查看历史 tag?

git tag -l -n  # 查看所有 tag 及说明

Q3: Push 会覆盖我手动输入的 commit 信息吗?

不会。只有当工作区有未提交的更改时,才会引导你输入 commit 信息。

如果你已经手动 commit 了,git-quick push 会直接推送,不会修改你的 commit。

Q4: 我可以不使用 commit 类型选择吗?

如果你更喜欢传统方式:

# 传统方式
git add .
git commit -m "your message"
git-quick push  # 只推送,不会再次提交

# 或使用原生 git push
git push

Q5: Push 检测到冲突怎么办?

工具会中断操作并提示:

1. git pull
2. 解决冲突文件
3. git add .
4. git commit
5. 再次运行 git-quick push

Q6: Merge 失败如何回滚?

git merge --abort  # 放弃合并

Q7: 时间戳的时区是什么?

使用本地时区。例如北京时间(UTC+8)。

Q8: 如何删除错误的 tag?

# 删除本地 tag
git tag -d v1.2.3.20241208091530

# 删除远程 tag
git push origin :refs/tags/v1.2.3.20241208091530

🔧 工作原理

Tag 命令流程

检查仓库 → 拉取最新代码 → 解析最新 tag →
选择版本类型 → 生成新版本号 → 添加时间戳 →
创建 tag → 推送到远程 → 复制到剪贴板

Push 命令流程

检查仓库 → 检查工作区状态 →
[如有未提交更改] 显示文件 → 选择commit类型 → 输入信息 → add → commit →
检查待推送提交 → 拉取远程状态 → 检查冲突 →
显示提交列表 → 确认 → 推送

Merge 命令流程

检查仓库 → 检查工作区 → 同步远程 →
选择目标分支 → 同步目标分支 → 切换分支 →
执行合并 → 提供后续建议

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT License

🔗 相关链接


Enjoy! 🎉

About

some git tools

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors