首页 > 解决方案 > 如何在 .bashrc 中获取当前分支名称的修改版本作为我的提交消息?

问题描述

假设我的当前分支为STACK-123/this-is-my-branch. 在我的 .bashrc 文件中,如何运行一个函数以使提交消息成为分支名称的修改版本。假设我有别名branch-to-commit-alias

$: branch-to-commit-alias
$: git log
Author: me
Date: <todays date>

   STACK-123: This is my branch

标签: bashgit

解决方案


此 shell 函数仅STACK 123: this is my branch根据分支名称为您提供提交消息。

branch-to-commit-alias () {
    local msg=$(git rev-parse --abbrev-ref HEAD | sed 's|/|: |; s|-| |g')
    git commit -m "$msg"
}

但是:隐藏git commit在这样的函数中也会隐藏您可能想要添加到的任何选项git commit

更灵活的方法是 git-hooks(请参阅 参考资料git help hooks):您可以将逻辑移动到prepare-commit-msg. 这个钩子将准备你在编辑器中看到的消息。您可以使用更多信息编辑该消息,或者只是退出编辑器并完成。

为此,将此脚本写入.git/hooks/prepare-commit-msg

#!/bin/sh

mv "$1" "$1.bak"
(
    git rev-parse --abbrev-ref HEAD | sed 's|/|: |; s|-| |g'
    cat "$1.bak"
) > "$1"

并使其可执行:

chmod +x .git/hooks/prepare-commit-msg

推荐阅读