Shell脚本正确获取Git当前所在分支的方法

看到一些博文提到获取shell脚本获取git当前分支使用了git branch,类似的方法如下:

#!/bin/bash
function git.branch {
br=`git branch | grep "*"`
echo ${br/* /}
}

实际上,这是一种错误的方法。原因如下:

$ git branch
* master
next
$ git checkout master^0
$ git branch
* (no branch)
master
next

一般情况下,当我们使用git branch时,在控制台会在当前分支前加上星号(*),以提示我们当前所在的分支。但当我们checkout 一个不存在的分支时,如上面例子所示,git会在(no branch)前加上了星号,这显然不是正确的。

正确方式时使用 git symbolic-ref,脚本如下:

if branch=$(git symbolic-ref --short -q HEAD)
then
echo on branch $branch
else
echo not on any branch
fi

版权声明:著作权归作者所有。

相关推荐

Angular 5获取当前的路由url及参数

获取当前加载组件的路由信息可以使用ActivatedRoute。ActivatedRoute接口如下:interface ActivatedRoute {    snapshot: ActivatedRouteSnapshot   url: Observable<UrlSegment[]> &nb

Ruby调用shell脚本总结

Ruby可以使用以下几种方法来执行shell脚本。1、使用反引号``调用shell脚本语法`cmd` 返回命令的结果示例`echo "hello"` 2、内置语法%x( cmd ) 其中%x后面为分隔符,上面使用了(作为分隔符,当遇到收括号即表示命令结束。这些分隔符可以为[,{等。示例%x( echo 'hello' 

Python获取当前时间

datatime模块now()使用datetime.now()获取当前日期和时间>>> import datetime >>> datetime.datetime.now() datetime(2017, 12, 27, 21, 39, 24, 676972) 仅返回日期&

Git删除本地和远程分支

Git删除本地分支有两种方法删除本地分支$ git branch -d <branch_name> $ git branch -D <branch_name> -d:--delete的简写-D:--delete --force的简写Git删除远程分支Git v2.8.0$&n

Linux shell脚本获取命令行的输出

在Linux使用命令替换来获取命令行的输出命令替换格式:$(command) 或者`command` 这里的`为反引号。示例OUTPUT="$(ls -1)" echo "${OUTPUT}" 参考:Bash Reference Manual