当前分支处于分离状态

Current branch in a detached state

有几种可能的方法来获取当前分支的名称:

current-branch1 = name-rev --name-only HEAD
current-branch2 = branch --show-current

#1 在有标签的情况下无法正常工作...

#2 确实工作得更好......除非 HEAD 指向分离状态。

是否有更好的别名来知道在分离状态下提交是在哪个分支上完成的?换句话说,一个别名在所有情况下都能更好地工作?

更新 -- 当签出一个提交时,我想获取提交完成的分支的名称...

$ g co 2767c5f9
Note: switching to '2767c5f9'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in 
this state without impacting any branches by switching back to a branch.
[...]
HEAD is now at 2767c5f9 Update ChangeLog

$ git for-each-ref --format="%(refname:short)" --points-at HEAD refs/heads

最后一条命令returns没什么...

是的,有:

# any ref (branch or tag or remote branch or ...)
git for-each-ref --format="%(refname:short)" --points-at HEAD

# branches only :
git for-each-ref --format="%(refname:short)" --points-at HEAD refs/heads

注意:如果有多个 refs/branches 指向当前提交,上述命令将列出所有这些。


[edit] git name-rev 也有一个 --refs option,你只需要知道分支是以 refs/heads 开头的引用:

git name-rev --name-only --refs="refs/heads/*" HEAD