鉴于您已经包含了该井,和 -answer,我不确定您的实际问题是什么。也许这是关于在脚本中使用变量?
get_current_branch() {
git rev-parse --abbrev-ref HEAD
}
cbranch=$(get_current_branch)
git checkout master && git pull
do_something_with $cbranch
我把get_current_branch
成壳功能这里,因为这个人是有缺陷的:如果你有一个“分离的头”开始时,你会得到这样的:
$ git checkout --detach master
HEAD is now at 4384e3cde... Git 2.14
Your branch is up-to-date with 'origin/master'.
$ git rev-parse --abbrev-ref HEAD
HEAD
使$cbranch
卷起只是HEAD
。
另一种方法是使用git symbolic-ref
,产生stderr中的fatal: ...
错误信息,并没有分支机构的名称,当你在这个分离的头模式:
$ git symbolic-ref --short HEAD
fatal: ref HEAD is not a symbolic ref
一旦回到master
,虽然:
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
$ git symbolic-ref --short HEAD
master
,所以我们可以使用git symbolic-ref
更换外壳的功能,如果外壳应在分离的头模式下打印错误:
cbranch=$(git symbolic-ref --short HEAD) || exit
的|| exit
使得外壳出口(与最后一个命令运行的退出状态,在这种情况下,git symbolic-ref
状态);如果命令失败,因此这将要么把目前的分行名称为$cbranch
,要不然打印一条消息到stderr并退出。
与所有的出路,我也建议避免git pull
完全,和检查索引和/或工作树是否干净。请参阅$(git --exec-path)/git-sh-setup
了解一些用于Git脚本的shell脚本项目。例如,shell函数require_clean_work_tree
在这里很有用。
而不是运行git pull
,你几乎总是要运行git fetch
,然后仔细检查的获取结果。只需将结果合并到合并或重新分配操作中,如git pull
所做的那样,在脚本中很难做到。
是的,存储在变量中正是我想要的。我只是不知道这是我想要的。感谢您的解释和其他附加信息。我只是开始为我的工作流程使用脚本,所以这非常有用。 – nxmohamad