显示所有分支的git前后信息,包括遥控器
在github项目上,你可以进入一个/分支页面,像这样一个漂亮的图表,每个分支显示多less落后,每个分支在主控方面有多远。
有没有一个类似的命令行工具? 什么与远程工作以及? 例如,
git branch -v -v
接近我所寻找的,但只适用于当地的分支机构。
我一直很好奇,所以我只是鞭打一个git branch-status
脚本,使用git for-each-ref
#!/bin/bash # by http://github.com/jehiah # this prints out some branch status (similar to the '... ahead' info you get from git status) # example: # $ git branch-status # dns_check (ahead 1) | (behind 112) origin/master # master (ahead 2) | (behind 0) origin/master git for-each-ref --format="%(refname:short) %(upstream:short)" refs/heads | \ while read local remote do [ -z "$remote" ] && continue git rev-list --left-right ${local}...${remote} -- 2>/dev/null >/tmp/git_upstream_status_delta || continue LEFT_AHEAD=$(grep -c '^<' /tmp/git_upstream_status_delta) RIGHT_AHEAD=$(grep -c '^>' /tmp/git_upstream_status_delta) echo "$local (ahead $LEFT_AHEAD) | (behind $RIGHT_AHEAD) $remote" done
用法:
$ git branch-status dns_check (ahead 1) | (behind 112) origin/master master (ahead 2) | (behind 0) origin/master
2015年更新
我下面的第一个答案是不理想的,因为上游分支不一定是你推动的分支。 这只是你从中拉的分支。
使用Git 2.5+,正确的命令是:
git for-each-ref --format="%(refname:short) %(upstream:track)" refs/heads
请参阅“ 查看未压缩的Git提交 ”。
(正如注释中的void.pointer所指出的 , upstream:track
比push:track
更精确,这取决于默认的推送策略 )
Git 2.13(2017年第二季度)使用了更通用的ref-filter API和更完整的git for-each-ref push
:
请参阅提交3d9e4ce 提交949af06 提交56b4360 提交6eac70f 提交1a34728 提交1a0ca5e 提交3a42980 提交17938f1 提交3ba308c 提交a798410 提交b180e6f 提交01f9582 提交7743fcc 提交ffd921d 提交99c6a71 提交d4919bb 提交42d0eb0 , 提交4f3e3b3 , 提交c58fc85 (2017年1月10日)通过Karthik Nayak( KarthikNayak
) 。
(由Junio C gitster
合并- gitster
– 承诺93e8cd8 ,2017年2月27日)
push:
表示所显示参考的
@{push}
位置的本地ref名称。
尊重:short
,:lstrip
,:rstrip
:track
,和:trackshort
选项作为upstream
。
如果没有configuration@{push}
ref,则生成一个空string。如果
lstrip=<N>
(rstrip=<N>
),则从refname的前部(后部)剥离<N>
斜线分隔的path组件
(比如%(refname:lstrip=2)
把refs/tags/foo
变成foo
和%(refname:rstrip=2)
将refs/tags/foo
变成refs
)。如果
<N>
是负数,则从指定的末端剥离所需的path组件,以留下-<N>
path组件
(例如%(refname:lstrip=-2)
把refs/tags/foo
变成tags/foo
和%(refname:rstrip=-1)
将refs/tags/foo
变成refs
)
原始答复(2014)
Git 1.9 / 2/0(2014年第1季度)将提供另一种方法。
参见Ramkumar Ramachandra(artagnon)的 提交b28061c :
for-each-ref
:介绍%(upstream:track[short])
介绍:
%(upstream:track)
显示“[ahead M, behind N]
”和%(upstream:trackshort)
地显示“=
”,“>
”,“<
”或“<>
”(由contrib/completion/git-prompt.sh
)。现在,您可以在for-each-ref中使用以下格式:
%(refname:short) %(upstream:trackshort)
用简洁的跟踪信息显示参考。
请注意
:track
和:trackshort
只能与“upstream
”一起使用,在与其他任何东西一起使用时会出错。
对于这种types的问题,你可以使用“Gitk”
sudo apt-get update sudo apt-get install gitk
这可以帮助你很多。你甚至可以看到所有分支git