说我的当前分支为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
答案 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 -
不过,我会选择一个更好的名字。 ;)