8
我在我的本地git存儲庫中有許多分支,我保留一個特定的命名約定,它可以幫助我區分最近使用的和舊的分支之間或合併與未與主合併。如何根據名稱爲Git分支着色?
根據一些基於正則表達式的規則,在沒有使用外部腳本的情況下,有沒有辦法在git branch
的輸出中爲分支名稱着色?
到目前爲止我所得出的最好結果是通過外部腳本運行git branch
,並創建一個別名。然而,這可能不是很便攜...
我在我的本地git存儲庫中有許多分支,我保留一個特定的命名約定,它可以幫助我區分最近使用的和舊的分支之間或合併與未與主合併。如何根據名稱爲Git分支着色?
根據一些基於正則表達式的規則,在沒有使用外部腳本的情況下,有沒有辦法在git branch
的輸出中爲分支名稱着色?
到目前爲止我所得出的最好結果是通過外部腳本運行git branch
,並創建一個別名。然而,這可能不是很便攜...
git-branch
不會讓你這麼做是否有根據一些基於正則表達式規則沒有辦法顏色分支名稱中的
git branch
輸出使用外部腳本?
否; Git不提供您根據分支名稱匹配的模式自定義git branch
輸出中的顏色的方法。
我想出到目前爲止是通過外部腳本運行
git branch
,並創建一個別名最好的。
一種方法的確是寫一個自定義腳本。但是,請注意git branch
是一個瓷器Git命令,因此,不應在腳本中使用它。爲此,首選管道Git命令git-for-each-ref
。
這是一個這樣的腳本的例子;定製它以滿足您的需求。
#!/bin/sh
# git-colorbranch.sh
if [ $# -ne 0 ]; then
printf "usage: git colorbranch\n\n"
exit 1
fi
# color definitions
color_master="\033[32m"
color_feature="\033[31m"
# ...
color_reset="\033[m"
# pattern definitions
pattern_feature="^feature-"
# ...
git for-each-ref --format='%(refname:short)' refs/heads | \
while read ref; do
# if $ref the current branch, mark it with an asterisk
if [ "$ref" = "$(git symbolic-ref --short HEAD)" ]; then
printf "* "
else
printf " "
fi
# master branch
if [ "$ref" = "master" ]; then
printf "$color_master$ref$color_reset\n"
# feature branches
elif printf "$ref" | grep --quiet "$pattern_feature"; then
printf "$color_feature$ref$color_reset\n"
# ... other cases ...
else
printf "$ref\n"
fi
done
把你的路徑上的腳本並運行
git config --global alias.colorbranch '!sh git-colorbranch.sh'
以下是我的玩具回購獲得(在GNU的bash ):
看着[git分支](http://stackoverflow.com/questions/31984968/color-git-branches-based-on-their-names)doc。我不認爲這是可能的 – Vishwanath
使用自定義腳本是要走的路,但使用'git for-each-ref'(管道)而不是'git branch'(瓷器)。 – Jubobs
git for-each-ref'看起來很酷,我從來沒有用過它。 –