显示所有分支(包括远程分支)的 git 前后信息
在 github 项目上,您可以转到 /branches 页面并查看像这样的漂亮图表,每个分支显示每个分支相对于 master 落后多远以及领先多远。
是否有命令行工具可以执行类似的操作?有什么东西也可以与遥控器一起使用吗?例如,
git branch -v -v
接近我正在寻找的内容,但仅适用于本地分支机构。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我也对此感到好奇,所以我刚刚制作了一个
gitbranch-status
脚本使用 git for-each-ref 提供此信息用法:
I've been curious about this as well, so i just whipped up a
git branch-status
script that gives this information usinggit for-each-ref
Usage:
2015 更新
我下面的最初答案并不理想,因为上游分支不一定是您要推送的分支,它可能与您从中拉取的分支不同。
对于 Git 2.5+,正确的命令是:
请参阅“查看未推送的 Git 提交”了解更多信息。
(正如 void.pointer 在 评论,< code>upstream:track 比
push:track
更精确,具体取决于 默认推送策略)(
(upstream:remotename)
部分来自HankCA 的 评论,查看如果分支已被推送(或者通常有一个上游等效分支)。)Git 2.13(第二季度) 2017)使用更通用的 ref-filter API 和更完整的
git for-each-ref推送
:参见提交3d9e4ce ,<一href="https://github.com/git/git/commit/949af0684c1f84587504e2143fca6f9bb8504e31" rel="nofollow noreferrer">提交 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 Hamano --
gitster
-- 合并于 提交 93e8cd8,2017 年 2 月 27 日)原始答案 (2014)
另一种方法将在 Git 1.9/2/0 中提供( Q1 2014)。
请参阅 提交 b28061c 来自 拉姆库马尔·拉马钱德拉(artagnon):
for-each-ref
: 引入%(upstream:track[short])
在 Git 2.30(2021 年第一季度)之前,提交和标记对象可能在每一行的末尾都有 CR(您可以使用 hash-object 或使用
--cleanup=verbatim
创建这样的对象拒绝默认的清理操作),但这将导致不可能用空行来分隔邮件的标题和正文。请参阅 提交 e2f8958,提交 9f75ce3(2020 年 10 月 29 日),作者:菲利普布莱恩 (
phil-blain
)。(由 Junio C Hamano --
gitster
-- 合并于 提交 4c7eb63,2020 年 11 月 9 日)注意:这是在 Git 2.39 中改进/修复/修改的。
不再有
^M:
-----BEGIN PGP SIGNATURE-----^M
。不再需要额外的线路
Update 2015
My initial answer below is not ideal as the upstream branch is not necessarily the branch you are pushing t which could be different from the branch you are pulling from.
With Git 2.5+, the correct command is:
See more at "Viewing Unpushed Git Commits".
(As pointed out by void.pointer in the comments,
upstream:track
is more precise thanpush:track
, depending on the default push policy)(The
(upstream:remotename)
part comes from HankCA's comment, to see if a branch had been pushed (or generally had an upstream equivalent).)Git 2.13 (Q2 2017) uses a more generic ref-filter API with a more complete
git for-each-ref push
:See 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, commit 4f3e3b3, commit c58fc85 (10 Jan 2017) by Karthik Nayak (
KarthikNayak
).(Merged by Junio C Hamano --
gitster
-- in commit 93e8cd8, 27 Feb 2017)Original answer (2014)
Another way will be available with Git 1.9/2/0 (Q1 2014).
See commit b28061c from Ramkumar Ramachandra (artagnon):
for-each-ref
: introduce%(upstream:track[short])
Before Git 2.30 (Q1 2021), a commit and tag object may have CR at the end of each and every line (you can create such an object with hash-object or using
--cleanup=verbatim
to decline the default clean-up action), but it would make it impossible to have a blank line to separate the title from the body of the message.See commit e2f8958, commit 9f75ce3 (29 Oct 2020) by Philippe Blain (
phil-blain
).(Merged by Junio C Hamano --
gitster
-- in commit 4c7eb63, 09 Nov 2020)Note: this is improved/fixed/amended in Git 2.39.
No more
^M:
-----BEGIN PGP SIGNATURE-----^M
.No more extra line
另一种选择是,使用 Git 2.41+(2023 年第二季度),适用于所有分支/标签:
使用 Git 2.41(2023 年第二季度),“
git for-each-ref
"(man) 学习 '%(ahead-behind: )
' 来计算与单个参考的距离点在具有大量批量提交的历史记录。它显示了两个新功能。
首先: git for-each-ref --stdin
请参阅 提交cbfe360,提交 49abcd2, 提交 fd67d14, 提交 2ee11f7, 提交 80c928d, 提交 368d19b, 提交 b2c51b7, 提交 b73dec5(2023 年 3 月 20 日),作者:德里克·斯托利(
derrickstolee
)。请参阅 提交 c08645b(2023 年 3 月 20 日),作者:泰勒·布劳 (
ttaylorr
)。(由 Junio C Hamano --
gitster
-- 合并于 提交 7727da9,2023 年 4 月 6 日)git for-each-ref
现在包含在其 手册页:第二: git for-each-ref --format="%(ahead-behind:HEAD)"
git for-each-ref
现在包含在其 手册页:它还说明/解释了如何计算提前/落后
Another option, with Git 2.41+ (Q2 2023), for all branches/tags:
With Git 2.41 (Q2 2023), "
git for-each-ref
"(man) learns '%(ahead-behind:<base>)
' that computes the distances from a single reference point in the history with a bunch of commits in bulk.It shows two new features.
First:
git for-each-ref --stdin <refs
See commit cbfe360, commit 49abcd2, commit fd67d14, commit 2ee11f7, commit 80c928d, commit 368d19b, commit b2c51b7, commit b73dec5 (20 Mar 2023) by Derrick Stolee (
derrickstolee
).See commit c08645b (20 Mar 2023) by Taylor Blau (
ttaylorr
).(Merged by Junio C Hamano --
gitster
-- in commit 7727da9, 06 Apr 2023)git for-each-ref
now includes in its man page:Second:
git for-each-ref --format="%(ahead-behind:HEAD)"
git for-each-ref
now includes in its man page:It also illustrates/explains how ahead/behind is computed