2

我在我的 repo 中使用 git post-checkout 挂钩将当前分支转换为一个变量,然后我想在 PHP 等其他地方使用它。

以下是我的结帐后脚本:

#!/bin/bash
echo $GITBRANCH
GITBRANCH=`git symbolic-ref HEAD | cut -d/ -f3-`
echo $GITBRANCH
export $GITBRANCH

但是它不会更新。例如:

>git checkout master
Switched to branch 'master'
develop
master
>echo $GITBRANCH
develop

单独运行该GITBRANCH=git symbolic-ref HEAD | cut -d/ -f3-命令将生成当前分支名称。

为什么钩子不全局更新 $GITBRANCH 变量?

4

4 回答 4

3

当您在脚本中设置变量时,它将仅在脚本运行的 shell 中可用。一旦进程终止,您设置的变量就永远消失了!

如果您希望该变量随处可用,可能.profile.bashrc会是一个更好的地方。

于 2012-10-17T14:52:55.097 回答
0

运行脚本,前面有一个点。

. script
于 2012-10-17T15:03:38.093 回答
0

一个两步过程应该完成你想要的:

1) 在您的结帐后脚本中,创建一个包含您要导出的变量的临时文件。就像是

#!/bin/bash
GITBRANCH=`git symbolic-ref HEAD | cut -d/ -f3-`
echo "GITBRANCH=$GITBRANCH" > /tmp/new-branch

2)创建一个bash函数来充当包装器git,并在结帐后使用它来获取临时文件:

# Put this in .bashrc
git () {
    command git "$@"
    if [[ $1 = "checkout" ]]; then
        . /tmp/new-branch
    fi
}

$ git checkout master
Switched to branch 'master'
$ echo $GITBRANCH
master
于 2012-10-17T15:29:40.387 回答
-1

尝试:

export GITBRANCH

也就是说,没有美元符号。

于 2012-10-17T14:52:24.180 回答