我正在尝试创建一个bash变量,我可以用它来引用我在Git中的当前分支:类似于$ branch。
在我的branch=$(git symbolic-ref --short -q HEAD)
中添加:bash_profile
后,当我开始新的终端时,我会不断获得:fatal: Not a git repository (or any of the parent directories): .git
。
此外,echo $branch
不打印分支名称,因为git symbolic-ref --short -q HEAD
会。
我希望能够使用它不打印分支名称(我的提示中已有)但是要执行以下操作:
git push origin $branch
答案 0 :(得分:3)
您所在的分支取决于您所在的目录。如果您有两个git工作树,~/a
和~/b
,则输入cd ~/a
可以将您置于一个分支上输入cd ~/b
可以让你进入另一个分支。
因此,尝试在$branch
中设置.bash_profile
是行不通的。每次更改工作树时,以及任何可以更改当前工作树分支的命令之后,您都需要更新$branch
。
最简单的事情就是不设置变量。相反,请创建一个别名:
alias branch='git symbolic-ref --short -q HEAD 2>/dev/null'
然后像这样使用它:
git push origin $(branch)
如果你是老派的话,或者像这样:
git push origin `branch`
如果您真的想设置环境变量,最简单的解决方案是每次打印提示时都设置它:
_prompt_command () {
export branch=$(git symbolic-ref --short -q HEAD 2>/dev/null)
}
export PROMPT_COMMAND=_prompt_command
注意:您应该检查.bash_profile
和.bashrc
,看看您是否已经设置PROMPT_COMMAND
。如果是这样,只需在您正在运行的任何函数中设置branch
作为提示命令。