有了git branch
,我只能得到一个分支作为"当前"分支,即使签出的提交匹配多个分支。
在像tig
这样的工具中,指向同一提交的所有分支。例如:
master upstream/master origin/master
如何从git
本身中提取此信息?
我想在我的提示符上看到这一点(对我来说,当我正在推送代码时,知道我的工作副本与上游/主版本一致是很重要的(。是否有任何命令行工具可以给我此信息?
目前我的 bash 提示包括
/usr/bin/git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* (.*)/ (1)/'
只会显示"(主("(即本地分支(。
git log -1 --pretty=%D
会给你文字
git branch --all --points-at HEAD
是根据手册您要查找的内容:
-a, --all
List both remote-tracking branches and local branches.
--points-at <object>
Only list branches of the given object.
如果您还想查看其他 ref(例如标签(或在脚本中使用结果,则存在变体 - 在这种情况下,您不想为了删除不必要的东西而弄乱sed
:
> git for-each-ref --points-at HEAD --format="%(refname:short)" refs/heads refs/remotes
master
otherbranch
origin/master
origin/HEAD
git branch --all --contains HEAD