在 mac(m1) 终端上没有获得完整的分支名称
Not getting full branch name on mac(m1) terminal
代码:
# Find and set branch name var if in git repository.
function git_branch_name()
{
branch=$(git symbolic-ref HEAD 2> /dev/null | awk 'BEGIN{FS="/"} {print $NF}')
if [[ $branch == "" ]];
then
:
else
echo '-%F{#ff00f7}('$branch')%f'
fi
}
# Enable substitution in the prompt.
setopt prompt_subst
# Config for prompt. PS1 synonym.
prompt='%F{#1dc223}%n%f@%F{#00ffd0}%1~%f$(git_branch_name)$ '
这是我在 .zshrc 文件中的代码,“git_branch_name”是在我的终端上获取分支名称的函数。
它对所有分支都工作正常,但是当我有一个名称包括正斜杠 (/) 的分支时,它只给我最后一个块。
示例:
分支名称:主要 - >主要
分支名称:feat/process -> 进程
但我需要完整的分支名称“feat/process”。
这与 Linux、macOS 或终端无关,与 Git 也没有什么关系:这是因为你告诉 awk
只打印最后一个斜杠-分离组件:
awk 'BEGIN{FS="/"} {print $NF}'
如果您不想要最后一个以斜杠分隔的组件,请不要要求它。这里根本不需要使用 awk
:如果有当前分支,则使用 git rev-parse --abbrev-ref HEAD
生成当前分支的缩写名称,如果没有,则使用 HEAD
;或使用 git symbolic-ref --short HEAD
生成当前分支的缩写名称,如果没有当前分支则出错。
代码:
# Find and set branch name var if in git repository.
function git_branch_name()
{
branch=$(git symbolic-ref HEAD 2> /dev/null | awk 'BEGIN{FS="/"} {print $NF}')
if [[ $branch == "" ]];
then
:
else
echo '-%F{#ff00f7}('$branch')%f'
fi
}
# Enable substitution in the prompt.
setopt prompt_subst
# Config for prompt. PS1 synonym.
prompt='%F{#1dc223}%n%f@%F{#00ffd0}%1~%f$(git_branch_name)$ '
这是我在 .zshrc 文件中的代码,“git_branch_name”是在我的终端上获取分支名称的函数。
它对所有分支都工作正常,但是当我有一个名称包括正斜杠 (/) 的分支时,它只给我最后一个块。
示例: 分支名称:主要 - >主要 分支名称:feat/process -> 进程
但我需要完整的分支名称“feat/process”。
这与 Linux、macOS 或终端无关,与 Git 也没有什么关系:这是因为你告诉 awk
只打印最后一个斜杠-分离组件:
awk 'BEGIN{FS="/"} {print $NF}'
如果您不想要最后一个以斜杠分隔的组件,请不要要求它。这里根本不需要使用 awk
:如果有当前分支,则使用 git rev-parse --abbrev-ref HEAD
生成当前分支的缩写名称,如果没有,则使用 HEAD
;或使用 git symbolic-ref --short HEAD
生成当前分支的缩写名称,如果没有当前分支则出错。