如何获取Git中当前分支的名称?
当前回答
如果CI服务器没有带有分支名称的环境变量,并且容器内部没有git二进制文件,则可以使用:
cat.git/HEAD|awk-F'/'“{print$NF}”
其他回答
您可以永久设置bash输出以显示git分支名称。当您使用不同的分支时,它非常方便,无需一直键入$git状态。Github repo git-aware提示.
打开终端(ctrl-alt-t)并输入命令
mkdir ~/.bash
cd ~/.bash
git clone git://github.com/jimeh/git-aware-prompt.git
使用sudo nano~/.bashrc命令编辑.bashrc(适用于Ubuntu),并在顶部添加以下内容:
export GITAWAREPROMPT=~/.bash/git-aware-prompt
source "${GITAWAREPROMPT}/main.sh"
然后粘贴代码
export PS1="\${debian_chroot:+(\$debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \[$txtcyn\]\$git_branch\[$txtred\]\$git_dirty\[$txtrst\]\$ "
在前面粘贴安装代码的同一文件的末尾。这将为您提供彩色输出:
为了我自己的参考(但可能对其他人有用),我概述了本线程中提到的大多数(基本命令行)技术,每个技术都应用于几个用例:HEAD是(指向):
本地分支(主分支)远程跟踪分支,与本地分支同步(源/主与主提交相同)远程跟踪分支,与本地分支不同步(原点/功能foo)标签(v1.2.3)子模块(在子模块目录中运行)一般分离头(以上均不适用)
结果:
git分支|sed-n'/\*/s///p'本地分支:主远程跟踪分支(同步):(与源/主分离)远程跟踪分支(不同步):(与原始/功能foo分离)标签:(与v1.2.3分离)子模块:(头部在285f294处分离)通用分离头:(与285f294分离)git状态|头-1本地分支:#在分支主机上远程跟踪分支(同步):#HEAD在源站/主站分离远程跟踪分支(不同步):#HEAD在origin/feature foo分离tag:#HEAD在v1.2.3中分离子模块:#HEAD在285f294处分离一般分离封头:#在285f294处分离封头git-descripte--全部本地分支:主管/主管远程跟踪分支(同步):头/主(注意:不是远程/原点/主)远程跟踪分支(不同步):remotes/origin/feature foo标签:v1.2.3子模块:remotes/origin/HEAD通用分离头:v1.0.6-5-g2393761cat.git/HEAD:本地分支:ref:refs/heads/master子模块:cat:.git/HEAD:不是目录所有其他用例:相应提交的SHAgit-rev-parse--缩写ref HEAD本地分支:主所有其他用例:HEADgit符号ref—短HEAD本地分支:主所有其他用例:fatal:ref HEAD不是符号ref
(仅供参考,这是使用git 1.8.3.1版完成的)
在终端中写入以下命令:
git branch | grep \*
or
git branch --show-current
或Git 2.22及以上版本:
git branch --show
有多种方法可以检查Git的当前分支,但我更喜欢:
git branch --show
甚至gitbranch也会显示当前分支名称以及所有现有分支名称列表。
git branch | grep "*" | sed "s/* //" | awk '{printf $0}' | pbcopy
将结果直接复制到粘贴板。感谢@olivier refalo的开始…
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- 在GitHub上有一个公共回购的私人分支?
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式