Commit Description Append

一个 VS Code 扩展,用于自动在 Git 提交信息中追加自定义文本内容,支持从分支名提取长数字串的动态功能。
✨ 功能特性
🚀 核心功能
- 自动追加: 在每次 Git 提交时自动追加预设的文本内容
- 位置控制: 支持在提交信息头部或尾部追加内容
- 分隔符配置: 支持自定义分隔符(空格、换行等)
- 动态数字提取: 从分支名中提取长度大于6位的最后一个数字串
- 智能去重: 避免重复追加相同内容
- 跨平台支持: 支持 Windows、macOS 和 Linux
🎛️ 便捷控制
- 一键启用/禁用: 通过命令面板快速控制功能开关
- 可视化配置: 友好的配置界面,无需手动编辑配置文件
- 实时生效: 配置更改后立即应用到所有 Git 仓库
- 完整清理: 支持一键清理所有插件配置和文件
🔧 技术特性
- 多仓库支持: 自动检测并配置工作区中的所有 Git 仓库
- Git 钩子管理: 智能管理 prepare-commit-msg 钩子
- 优先执行: 钩子内容插入到文件开头,确保在其他钩子代码之前执行
- 兼容性强: 同时支持命令行 Git 和 VS Code 内置 Git 功能
- 配置监听: 自动监听配置变化并实时更新
📦 安装
- 打开 VS Code
- 按
Ctrl+Shift+X
(Windows/Linux) 或 Cmd+Shift+X
(macOS) 打开扩展面板
- 搜索 "Commit Description Append"
- 点击安装
或者通过命令行安装:
code --install-extension huanghaiying.commit-desc-append
🚀 快速开始
1. 配置插件
按 Ctrl+Shift+P
(Windows/Linux) 或 Cmd+Shift+P
(macOS) 打开命令面板,输入:
Git: Configure Commit Description Append
2. 设置追加内容
在配置对话框中:
- 输入要追加的文本内容(如:
[自动追加]
)
- 选择追加位置(头部或尾部)
- 选择分隔符(空格、换行等)
3. 启用功能
使用命令:
Git: Enable Commit Description Append
4. 开始使用
现在每次提交时,系统会自动追加您配置的内容!
🎯 使用场景
场景 1: 静态文本追加
配置: 追加文本 = "[自动提交]"
原始提交: fix: 修复用户登录问题
追加后: fix: 修复用户登录问题 [自动提交]
场景 2: 动态数字提取
分支名: feature/task-12345678
配置: 启用动态内容 + 静态文本 = "任务号:"
原始提交: feat: 新增用户管理功能
追加后: feat: 新增用户管理功能 任务号: 12345678
场景 3: 纯动态内容
分支名: bugfix/issue-87654321
配置: 仅启用动态内容,不设置静态文本
原始提交: fix: 修复登录bug
追加后: fix: 修复登录bug 87654321
⚙️ 配置选项
插件提供以下配置选项:
配置项 |
类型 |
默认值 |
描述 |
commitDescAppend.enabled |
boolean |
null |
是否启用自动追加功能 |
commitDescAppend.appendText |
string |
null |
要追加的文本内容 |
commitDescAppend.position |
string |
null |
追加位置(head/tail) |
commitDescAppend.separator |
string |
null |
分隔符 |
commitDescAppend.useDynamicContent |
boolean |
null |
是否启用动态内容 |
commitDescAppend.dynamicPattern |
string |
null |
动态内容模式 |
🔧 动态内容支持
插件支持以下动态占位符:
{{branch}}
- 当前分支名
{{date}}
- 当前日期
{{time}}
- 当前时间
{{user}}
- Git 用户名
{{project}}
- 项目名称
{{branch:prefix}}
- 分支名前缀
{{branch:suffix}}
- 分支名后缀
{{branch:lastnum}}
- 分支名���的最后一个数字
{{branch:regex:pattern}}
- 正则表达式提取
📋 命令列表
命令 |
描述 |
Git: Enable Commit Description Append |
启用自动追加功能 |
Git: Disable Commit Description Append |
禁用自动追加功能 |
Git: Configure Commit Description Append |
配置插件设置 |
Git: Clean Up Plugin Configuration |
清理所有插件配置 |
🛠️ 技术实现
架构设计
- ConfigManager: 负责配置管理和持久化
- GitHookManager: 负责 Git 钩子的安装和管理
- SimpleDynamicExtractor: 负责动态内容的提取和处理
- Extension: 主扩展入口,协调各个模块
Git 钩子机制
插件通过在每个 Git 仓库中安装 prepare-commit-msg
钩子来实现自动追加功能,确保与各种 Git 客户端的兼容性。
重要特性:
- 优先执行: 插件的钩子代码始终插入到钩子文件的开头(shebang之后),确保在其他可能包含
exit
语句的钩子代码之前执行
- 智能合并: 自动检测并保留现有钩子内容,实现多个钩子的和谐共存
- 安全清理: 卸载时只移除插件相关的钩子内容,保留其他钩子功能
🔍 故障排除
常见问题
Q: 插件没有生效?
A: 请确保:
- 插件已启用
- 当前目录是 Git 仓库
- 配置了追加文本内容
Q: 如何完全卸载插件?
A: 使用命令 "Clean Up Plugin Configuration" 清理所有配置,然后卸载扩展。
Q: 支持哪些 Git 客户端?
A: 支持所有标准的 Git 客户端,包括命令行 Git、VS Code 内置 Git、SourceTree 等。
🤝 贡献
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature
)
- 提交更改 (
git commit -m 'Add some AmazingFeature'
)
- 推送到分支 (
git push origin feature/AmazingFeature
)
- 打开 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
👨💻 作者
huanghaiying
🙏 致谢
感谢所有为这个项目做出贡献的开发者!
如果这个插件对您有帮助,请给个 ⭐️ 支持一下!