我在我的仓库中使用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变量?
答案 0 :(得分:3)
当您在脚本中设置变量时,它只能在脚本运行的shell中可用。一旦进程终止,您设置的变量就会永远消失!
如果您希望变量在任何地方都可用,那么.profile
或.bashrc
可能会更好。
答案 1 :(得分:0)
运行脚本,前面有一个点。
. script
答案 2 :(得分: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
答案 3 :(得分:-1)
尝试:
export GITBRANCH
即没有美元符号。