我来自Subversion背景,当我有一个分支时,我知道我正在处理的是“这些工作文件指向这个分支”。
但是对于Git,我不确定我何时在NetBeans或Notepad ++中编辑文件,无论它是与主服务器还是其他分支相关联。
没问题 git
在bash中,它告诉我我在做什么。
我来自Subversion背景,当我有一个分支时,我知道我正在处理的是“这些工作文件指向这个分支”。
但是对于Git,我不确定我何时在NetBeans或Notepad ++中编辑文件,无论它是与主服务器还是其他分支相关联。
没问题 git
在bash中,它告诉我我在做什么。
git branch
应该显示您的回购的所有本地分支。已加星标的分支是您当前的分支。
你也有 git symbolic-ref HEAD
它显示完整的refspec。
仅在Git v1.8及更高版本中显示分支名称(感谢Greg指出这一点):
$ git symbolic-ref --short HEAD
在Git v1.7 +上你也可以这样做:
$ git rev-parse --abbrev-ref HEAD
如果你在一个分支上,两者都应该给出相同的分支名称。如果你是一个独立的头,答案不同。
注意:
在早期的客户端,这似乎工作:
$ git symbolic-ref HEAD | sed -e "s/^refs\/heads\///"
- Darien 26. 2014年3月
为了我自己的参考(但它可能对其他人有用)我概述了这个线程中提到的大多数(基本命令行)技术,每个技术都应用于几个用例:HEAD是(指向):
结果:
git branch | sed -n '/\* /s///p'
master
(detached from origin/master)
(detached from origin/feature-foo)
(detached from v1.2.3)
(detached from 285f294)
git status | head -1
# On branch master
# HEAD detached at origin/master
# HEAD detached at origin/feature-foo
# HEAD detached at v1.2.3
# HEAD detached at 285f294
git describe --all
heads/master
heads/master
(注意: 不 remotes/origin/master
)remotes/origin/feature-foo
v1.2.3
v1.0.6-5-g2393761
cat .git/HEAD
:
ref: refs/heads/master
git rev-parse --abbrev-ref HEAD
master
HEAD
git symbolic-ref --short HEAD
master
fatal: ref HEAD is not a symbolic ref
(仅供参考,这是通过git版本1.8.3.1完成的)
还有一个选择:
git name-rev --name-only HEAD
很简单,我把它放在一个班轮(bash)
git branch | sed -n '/\* /s///p'
(信用:有限赎罪)
当我在那里时,一个班轮来获得远程跟踪分支(如果有的话)
git rev-parse --symbolic-full-name --abbrev-ref @{u}
您只需在Linux上的存储库目录中键入命令行(console):
$ git status
你会看到一些文字,其中有类似的东西:
...
On branch master
...
这意味着你目前在 master
科。如果您正在编辑任何文件并且它位于同一本地存储库(包含Git版本控制管理下的文件的本地目录)中,则您正在编辑此分支中的文件。
git symbolic-ref -q --short HEAD
我在需要当前分支名称的脚本中使用它。它将显示当前对HEAD的简短符号引用,它将是您当前的分支名称。