使用 Lumen AI 简化 Git Commit 信息生成

  • 晓道
  • 发布于 1天前
  • 阅读 274

Lumen 是一个强大的工具,能帮助开发者快速生成规范的 Git commit 信息。通过简单的代码修改,可以解决 git diff --staged 的限制。结合 Fish shell 和 gum 工具,你可以进一步优化工作流,确保提交前能够检查 AI 生成的结果。方案特别适合想偷懒的人

使用 Lumen AI 简化 Git Commit 信息生成

作为一名开发者,参与开源项目时,编写清晰的 Git commit 信息可能是一项繁琐的任务,尤其是对英语非母语的开发者。Lumen 是一个利用 AI 自动生成 commit 信息的工具,大大简化了这一过程。本文将分享如何使用 Lumen、解决常见问题,并提供一个 Fish shell 脚本优化工作流。

快速上手

Lumen 的核心功能是通过分析代码变更生成符合规范的 commit 信息。基本用法非常简单:

lumen draft

例如,修改了 README.md 文件后运行:

lumen draft
feat(README): Add test section

这会生成一条 commit 信息,但仅显示而未提交。如果想直接提交,可以结合 Git 命令:

lumen draft | git commit -F -

这将生成 commit 信息并直接提交。

解决问题

运行 lumen draft 时,可能会遇到以下错误:

error: diff (staged) is empty

这是因为 Lumen 默认调用 git diff --staged,而你尚未使用 git add 添加文件到暂存区,导致 diff 为空。

解决方法

修改 Lumen 源代码以使用 git diff(而非 git diff --staged)。具体步骤:

  1. 下载 Lumen 源代码(https://github.com/jnsahaj/lumen)。
  2. 编辑 src/command/mod.rs 文件,第 45 行左右,将 Diff::from_working_tree(true) 改为 false
diff --git a/src/command/mod.rs b/src/command/mod.rs
index b51a8d1..c643a5b 100644
--- a/src/command/mod.rs
+++ b/src/command/mod.rs
@@ -42,7 +42,7 @@ impl CommandType {
             }
             CommandType::List => Box::new(ListCommand),
             CommandType::Draft(context, draft_config) => Box::new(DraftCommand {
-                git_entity: GitEntity::Diff(Diff::from_working_tree(true)?),
+                git_entity: GitEntity::Diff(Diff::from_working_tree(false)?),
                 draft_config,
                 context,
             }),
  1. 保存后重新编译运行,lumen draft 即可基于工作目录的更改生成 commit 信息。

优化工作流:Fish Shell 脚本

为避免 AI 生成的 commit 信息直接提交(可能包含错误),可以使用 gum 工具添加确认步骤。以下是一个 Fish shell 函数,自动生成 commit 信息并提供确认选项:

function aic
    set RESULT (lumen draft)
    echo $RESULT
    echo "Committing..."
    gum confirm "是否提交代码?" && git commit -a -m "$RESULT" || echo "已取消提交"
end

使用方法

  1. 确保已安装 lumengum
  2. 将上述函数添加到你的 Fish shell 配置文件(通常是 ~/.config/fish/config.fish)。
  3. 修改代码后运行 aic,查看生成的 commit 信息,确认后提交或取消。

总结

Lumen 是一个强大的工具,能帮助开发者快速生成规范的 Git commit 信息。通过简单的代码修改,可以解决 git diff --staged 的限制。结合 Fish shell 和 gum 工具,你可以进一步优化工作流,确保提交前能够检查 AI 生成的结果。这个方案特别适合非英语母语的开发者,提升效率的同时保持提交信息的质量。

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
晓道
晓道
0xdD09...9161
技术交流:https://t.me/realDAO