首页 > 解决方案 > 使用 bash 获取当前分支并存储为变量

问题描述

当我使用 Kubernetes 时,我想运行依赖于我的活动分支的命令。出于这个原因,在给定当前分支的情况下,拥有别名将帮助我处理自动运行命令的其他别名。

我正在尝试使用函数将当前活动本地分支的名称存储到 bash 别名中,这样我就可以运行其他脚本而不必担心指定活动分支,但我一直遇到错误。

function branch ()
{
    local result='git branch | grep ^\* | cut -c 3-';
    echo "$result"
}

alias get_branch=$(branch)

但是当我尝试运行它时,我得到:

    usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
               [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
               [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
               [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
               <command> [<args>

.... (Same output as just entering 'git')

(当活动的 git 分支被列出时,cut -c 3-删除它后面的和空格)例如*

* feature/ch20372 ch20372 ch12345

奇怪的是这两项工作:

alias IMLAZY='git branch |grep \* | cut -d " " -f2'
alias TEST='git branch | grep ^\* | cut -c 3-'

这让我觉得

  1. 可能是我~/.bash_aliases在其他地方的语法问题吗?

  2. ZSH 有问题吗?

  3. 函数定义中某处的语法错误?

标签: bashgit

解决方案


使用适当的管道命令可能更简单:git rev-parse

(此处为当前分支命名gitcb,可以是任意的)

alias gitcb='git rev-parse --abbrev-ref HEAD'

推荐阅读