用 AI 生成 Git Commit Message,让提交更高效!
·3 mins
告别烦人的 git commit message 困扰!AI 来帮你搞定 #
在日常开发中,你是否曾经为写一个合适的 commit message 而发愁?尤其是在团队协作中,一个清晰、规范的 commit 记录不仅能提高代码可读性,还能大幅提升团队协作效率。
但现实是:
- 写好 commit message 需要时间和思考
- 团队成员的 commit 风格各异,难以统一
- 在编码状态时,切换到写 commit 会打断思路
本文将介绍一个基于 AI 的解决方案,让你一键生成专业、规范的 commit message,彻底解放你的时间和精力!
为什么要用 AI 生成 Git Commit Message? #
一个好的 commit message 应该具备以下特点:
- 清晰表达变更内容 - 让团队成员一眼看出本次提交的目的和影响范围
- 遵循规范 - 采用统一格式(如 Conventional Commits),便于自动化处理和版本管理
- 简洁明了 - 不冗长但包含必要信息
然而,在紧张的开发过程中,要做到以上几点并不容易。这就是 AI 能发挥作用的地方!
解决方案:AI 驱动的 Git Commit 助手 #
我们将使用 llm
CLI 工具结合 deepseek-coder
AI 模型,自动分析你的代码变更并生成符合规范的 commit message。
1. 安装必要工具 #
首先,安装 llm
命令行工具:
# 使用 pip 安装
pip install llm
# 或者 Mac 用户可以使用 Homebrew
brew install llm
然后安装并配置 DeepSeek 模型:
# 安装 DeepSeek 插件
llm install llm-deepseek
# 设置 API 密钥
llm keys set deepseek
Enter key:
2. 创建 AI Commit 助手脚本 #
创建一个名为 gcai
的脚本文件:
vi gcai
将以下代码复制到文件中:
#!/bin/bash
# -----------------------------------------------------------------------------
# AI-powered Git Commit Function
# Usage: gcai
# 1) Gets the current staged changes diff.
# 2) Sends them to an LLM to write the git commit message.
# 3) Allows you to easily accept, edit, regenerate, or cancel.
# The `llm` CLI util is awesome; get it here: https://llm.datasette.io/en/stable/
# referece: https://gist.github.com/karpathy/1dd0294ef9567971c1e4348a90d69285
# Unalias gcai if it exists (to prevent conflicts)
# unalias gcai 2>/dev/null
# AI_MODEL=gemini-flash
AI_MODEL=deepseek-coder
# Define the AI-powered gcai function using gemini
generate_commit_message() {
# Function to generate commit message using the gemini model
git diff --cached | llm -m ${AI_MODEL} "
Below is a diff of all staged changes, coming from the command:
\`\`\`
git diff --cached
\`\`\`
Use the following format
feat: A new feature.
fix: A bug fix.
docs: Documentation changes.
style: Code style changes (formatting, missing semicolons, etc.).
refactor: Code refactoring (neither fixes a bug nor adds a feature).
test: Adding or updating tests.
chore: Routine tasks like updating dependencies or build tools.
build: Changes affecting the build system or external dependencies.
ci: Changes to CI configuration files or scripts.
perf: Performance improvements.
revert: Reverting a previous commit.
Please generate a concise, one-line commit message for these changes."
}
# Function to read user input compatibly with both Bash and Zsh
read_input() {
if [ -n "$ZSH_VERSION" ]; then
echo -n "$1"
read -r REPLY
else
read -p "$1" -r REPLY
fi
}
# Main script
echo "Generating AI-powered commit message using ${AI_MODEL}..."
commit_message=$(generate_commit_message)
while true; do
echo -e "\nProposed commit message:"
echo "$commit_message"
read_input "Do you want to (a)ccept, (e)dit, (r)egenerate, or (c)ancel? "
choice=$REPLY
case "$choice" in
a|A )
if git commit -m "$commit_message"; then
echo "Changes committed successfully!"
exit 0
else
echo "Commit failed. Please check your changes and try again."
exit 1
fi
;;
e|E )
read_input "Enter your commit message: "
commit_message=$REPLY
if [ -n "$commit_message" ] && git commit -m "$commit_message"; then
echo "Changes committed successfully with your message!"
exit 0
else
echo "Commit failed. Please check your message and try again."
exit 1
fi
;;
r|R )
echo "Regenerating commit message using gemini..."
commit_message=$(generate_commit_message)
;;
c|C )
echo "Commit cancelled."
exit 1
;;
* )
echo "Invalid choice. Please try again."
;;
esac
done
赋予脚本执行权限:
chmod +x gcai
将脚本移动到你的 PATH 目录中(可选,但推荐):
# 例如移动到 /usr/local/bin
sudo mv gcai /usr/local/bin/
实际使用效果 #
使用非常简单,只需两步:
暂存你的更改:
git add .
运行 AI commit 助手:
gcai
交互式选项让你掌控全局 #
生成 commit message 后,你可以:
- 接受(a) - 直接使用 AI 生成的 message 提交
- 编辑(e) - 修改后再提交
- 重新生成(r) - 如果不满意,让 AI 再试一次
- 取消(c) - 放弃本次提交
为什么这个方案值得一试? #
1. 节省时间和精力 #
不再为写 commit message 而打断编码思路,AI 秒出高质量提交信息。
2. 提高团队协作效率 #
自动遵循 Conventional Commits 规范,使项目历史记录更加清晰、一致。
3. 提升代码质量 #
规范的 commit 记录有助于代码审查、问题追踪和版本管理。
4. 学习最佳实践 #
通过观察 AI 生成的 commit message,你可以学习到更好的提交描述方式。
进阶使用技巧 #
- 自定义提示词:你可以修改脚本中的提示词,以适应你团队的特定规范
- 切换 AI 模型:可以尝试其他模型如 GPT-4、Claude 等,只需修改
AI_MODEL
变量 - 集成到 Git Hooks:可以将此脚本集成到 pre-commit 钩子中,实现更自动化的工作流
总结 #
这个 AI 驱动的 Git Commit 助手能帮你:
- ⏱️ 节省时间 - 不再为写 commit message 而烦恼
- 🧠 减少认知负担 - 专注于编码,而不是描述变更
- 📊 提高一致性 - 自动生成符合规范的 commit 记录
- 🤝 增强协作 - 让团队成员更容易理解你的代码变更
赶快试试吧,让 AI 成为你的编码助手!🚀