显示所有分支的git前进和后退信息,包括遥控器
在github项目中,你可以进入一个/分支页面,选择一个像这样的漂亮的图表,每个分支表示每个分支相对于主控器的落后程度和多远。
有没有一种类似的命令行工具? 与遥控器配合使用的东西? 例如,
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}
位置的本地参考文献的名称。
尊重:short
, :lstrip
, :rstrip
, :track
和:trackshort
选项与upstream
一样。
如果未配置@{push}
ref,则生成一个空字符串。
如果添加了lstrip=<N>
( rstrip=<N>
),则从refname的前面(后面)剥离<N>
斜线分隔的路径组件
(比如%(refname:lstrip=2)
把refs/tags/foo
变成foo
和%(refname:rstrip=2)
把refs/tags/foo
变成refs
)。
如果<N>
是负数,则从指定的末端除去必要的路径组件,以留下-<N>
路径组件
(例如%(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
”一起使用,并且在与其他任何内容一起使用时出错。
对于这类问题,您可以使用“Gitk”`
sudo apt-get update
sudo apt-get install gitk
这可以帮助你很多。你甚至可以看到所有分支的git
链接地址: http://www.djcxy.com/p/31753.html上一篇: Show git ahead and behind info for all branches, including remotes