Git:Sane分支概述(本地[跟踪],远程(跟踪/陈旧/新))

时间:2017-06-25 15:47:40

标签: git

对于我本地存储库的所有分支及其所有远程控制器及其关系,是否有任何理智的概述? (内置或通过第三方工具或通过命令行“hacks”/脚本)

示例:

Local           Loc. track.    Remote track.            Remote
--------------------------------------------------------------
mynewtest
development     ---[0↑0↓]--->  origin/development  -->  development [origin]
                               origin/testing      -->  testing [origin]
version0.5      --[45↑0↓]--->  origin/version0.5
                               origin/version0.6
version1.0      (-[1↑854↓]->)  origin/version1.0   -->  version1.0 [origin]
                                                        UITests [origin]
algoContestMia  --[12↑4↓]--->  mia/algo            -->  algo [mia]
algoContestBen  ---[4↑8↓]--->  ben/newalgo         -->  newalgo [ben]
algoContestMyA  ---[7↑0↓]--->  my/algoContest      -->  algoContest [my]
algoContestMyB  --[14↑10↓]-->  my/algoContest      -->  algoContest [my]
                               my/UITests          -->  UITests [my]

version1.0是展示matching branches, that are not set as upstream but via matching names configured for pushs (not pulls)

的示例

1 个答案:

答案 0 :(得分:2)

要使您的本地回购更新,请使用git fetch。要查看有关您的位置的详细信息,您可以使用git branch -avv。要清除过时的跟踪引用,请使用git fetch --prune

如果您希望报告的格式与您在此处显示的方式完全一致,请查看--format上的git for-each-ref选项,以您想要的方式获取所有内容,这是五线领域。

你正在描述的工作流程,你唯一注意到你在多个遥控器上出现和消失的分支是它们的外观和消失,非常混乱。我自己的经历当然有限,但我从未见过这样的工作环境。尽管如此,你可以从git中得到你需要的东西,你只需要自己整理它。

git ls-remote显示来自任意路径或url(或远程名称)的所有或选择的refs,它只是路径或url的local-config简写和一组命令默认值。对于本地存储库,git for-each-refgit ls-remote,它还可以显示本地配置中有关引用的内容,并且可以为每个引用任意格式化(例如命令序列)文本。

例如,你可以

for f in `git remote`; do git ls-remote -h $f | sed s,^,$f\\t,; done

和一对git for-each-ref s,一个用于refs / heads,另一个用于refs / remotes,用于获取本地集合。请参阅git for-each-ref文档以了解它会告诉您什么,我可能只使用三个数据集中的简单unix join来表示这一点,也就是远程名称上的表,或者如果它是sqlite的话毛茸茸的。