如何在.bashrc中作为提交消息获得当前分支名称的修改版本?

时间:2019-04-24 20:41:45

标签: bash git

说我的当前分支为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

2 个答案:

答案 0 :(得分:2)

此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

答案 1 :(得分:1)

尝试一下-

$: xmp() { git commit -m "$(git branch | sed -n '/^[*] / { s/^[*] \(.*\)/\1/; s,/,:,; s/-/ /g; p; }') $@"; }

然后您可以像提交一样使用它。

$: xmp
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working tree clean

$: touch foo
$: git add foo
$: xmp
[master ac63834] master -
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 foo
$: git rm foo
rm 'foo'
$: xmp testing
[master ade608b] master - testing
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 foo
$: git log
commit ade608b32e45d586e6a72275939df12f4f50ee11 (HEAD -> master)
Author: Paul Hodges <Paul.Hodges@charter.com>
Date:   Wed Apr 24 16:29:56 2019 -0500

    master - testing

commit ac638346981b3104cb5185d5240fe218e827504a
Author: Paul Hodges <Paul.Hodges@charter.com>
Date:   Wed Apr 24 16:29:33 2019 -0500

    master -

不过,我会选择一个更好的名字。 ;)