在github项目上,您可以转到/ branch页面,并选择类似这样的漂亮图形,该图形为每个分支显示相对于master而言,每个分支落后多远。

是否有执行类似操作的命令行工具? Remote 也可以使用吗?例如,

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

09-03 22:50