在github项目中,你可以进入/ branches页面和一个漂亮的图形,每个分支显示每个分支相对于主分支的落后多远.
是否有一个类似的命令行工具?什么东西适用于遥控器?例如,
git branch -v -v
Run Code Online (Sandbox Code Playgroud)
接近我正在寻找的,但只适用于本地分支机构.
Jeh*_*iah 63
我一直对此感到好奇,所以我只是掀起了一个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
Run Code Online (Sandbox Code Playgroud)
用法:
$ git branch-status
dns_check (ahead 1) | (behind 112) origin/master
master (ahead 2) | (behind 0) origin/master
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 41
2015年更新
我在下面的初步答案并不理想,因为上游分支不一定是您要推动的分支.它只是你要从的分支.
使用Git 2.5+,正确的命令是:
git for-each-ref --format="%(refname:short) %(upstream:track)" refs/heads
Run Code Online (Sandbox Code Playgroud)
在" 查看未发布的Git提交 "中查看更多内容.
(如所指出的void.pointer的意见,upstream:track
是不是更精确push:track
,这取决于默认推送策略)
Git 2.13(2017年第二季度)使用更通用的ref-filter API,更完整git for-each-ref push
:
请参阅commit 3d9e4ce,commit 949af06,commit 56b4360,commit 6eac70f,commit 1a34728,commit 1a0ca5e,commit 3a42980,commit 17938f1,commit 3ba308c,commit a798410,commit b180e6f,commit 01f9582,commit 7743fcc,commit ffd921d,commit 99c6a71,commit d4919bb,commit 42d0eb0,提交4f3e3b3,提交c58fc85(2017年1月10日)作者:Karthik Nayak(KarthikNayak
).
(由Junio C gitster
Hamano合并- -在提交93e8cd8,2017年2月27日)
push:
Run Code Online (Sandbox Code Playgroud)
本地引用的名称,表示
@{push}
显示引用的位置.
尊重:short
,:lstrip
,:rstrip
,:track
,和:trackshort
选项upstream
呢.
如果未@{push}
配置ref,则生成空字符串.如果
lstrip=<N>
(rstrip=<N>
)将被附加,条<N>
斜线分隔径分量从refname的前(后)
(例如%(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年第一季度)将提供另一种方式.
见提交b28061c从Ramkumar拉玛昌德拉(artagnon) :
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)
Run Code Online (Sandbox Code Playgroud)
显示带有简洁跟踪信息的参考.
需要注意的是
:track
,并:trackshort
只以"工作upstream
",并与其他任何使用时报错了.
归档时间: |
|
查看次数: |
23061 次 |
最近记录: |