2

I am trying to create a bash variable which I can use to refer to my current branch in Git: something like $branch.

When adding: branch=$(git symbolic-ref --short -q HEAD) into my bash_profile, I keep getting: fatal: Not a git repository (or any of the parent directories): .git when I start a new terminal.

Furthermore, echo $branch does not print out the branch name, as git symbolic-ref --short -q HEAD would.

I'd like to be able to use it not to print out the branch name (I already have that in my prompt) but to do things like:

git push origin $branch

4

1 回答 1

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_profileand.bashrc看看你是否已经在设置PROMPT_COMMAND​​. 如果是这样,只需将branch您已经运行的任何功能设置为提示命令即可。

于 2013-08-12T22:25:58.947 回答