在 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 生成当前分支的缩写名称,如果没有当前分支则出错。