簡體   English   中英

如何在.bashrc中作為提交消息獲得當前分支名稱的修改版本?

[英]How can I get a modified version of the current branch name as my commit message in .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

此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

嘗試這個 -

$: 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 -

不過,我會選擇一個更好的名字。 ;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM