首页 > 编程知识 正文

git pull 某个分支,git-shell

时间:2023-05-04 06:54:34 阅读:286291 作者:1334

shell下如何获取git的当前所在分支名或tag呢?
为了解决这个小问题,我之前是走了弯路的,之前我简单的想法就是解析git branch输出的内容从中获取 分支或tag名。
如下代码,

# 返回$1指定的git项目的当前分支(branch)或标签名(tag)# $1 git项目源码位置function current_branch(){ git -C $1 branch | grep '*' | sed -e 's/*//g' -e 's/HEAD detached at//g' -e 's/s*//g' -e 's/[()]//g' }

但是我一直觉得这个办法不靠谱。对于普通的分支名(such as master),这个办法是没啥问题,但当切换到某个tag时。git branch的输出是这样的:

$ git branch

(HEAD detached at facelog-2.4.1)
dev2
master

上面的方法就是把输出字符串(HEAD detached at facelog-2.4.1)中无用的信息(HEAD,detached,at)都清理掉。现在用着也没问题,但保不齐哪天git版本升级,输出的单词改了一点,这个办法就不管用了。

今天认真在google上找了一下这个问题的解决办法,在 stackoverflow上找到这个帖子:
https://stackoverflow.com/questions/6245570/how-to-get-the-current-branch-name-in-git

嗯,挺对症的。在大神们提出了N种办法中找到下面这个,分支名,tag名,commit id都考虑到了,很完善,


于是基于这个方法我写了自己的函数,经测试没问题

# 返回$1指定的git项目的当前分支(branch)或标签名(tag)# $1 git项目源码位置,为空获则默认为当前文件夹function current_branch () { local folder="$(pwd)" [ -n "$1" ] && folder="$1" git -C "$folder" rev-parse --abbrev-ref HEAD | grep -v HEAD || git -C "$folder" describe --tags HEAD || git -C "$folder" rev-parse HEAD} $ function current_branch () {> local folder="$(pwd)"> [ -n "$1" ] && folder="$1"> git -C "$folder" rev-parse --abbrev-ref HEAD | grep -v HEAD || > git -C "$folder" describe --tags HEAD || > git -C "$folder" rev-parse HEAD> }$ current_branch .facelog-2.4.1$ current_branch /j/fdevmgrWhsemaster

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。