You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

列出所有分支并查询本地仓库与远程仓库是否同步

问题场景

给定分支结构:

F---E---D----B---A
            /        
           C [branch name]

执行git branch --all的输出示例:

C
*master
/remotes/origin/C
/remotes/origin/master

需求:无需逐个切换本地分支执行git status,通过单个命令自动检查所有本地分支与对应远程分支是否完全同步,识别出存在未推送本地提交的分支。

解决方案

快速查看分支同步状态

直接执行以下命令,能快速获取所有本地分支与关联远程分支的差异状态:

git branch -vv

输出示例中,类似C abc123 [origin/C ahead 1] 提交说明的行,ahead 1就表示本地C分支有1个未推送到远程origin/C的提交;behind 2则表示本地分支比远程分支少2个未拉取的提交;没有ahead/behind标记则说明分支完全同步。

自动检查并输出详细状态

如果需要更明确的结构化输出,可以执行以下脚本命令,它会自动遍历所有本地分支,统计并输出同步状态:

git for-each-ref --format='%(refname:short) %(upstream:short) %(push:track)' refs/heads/ | while read local remote track; do
    if [ -z "$remote" ]; then
        echo "本地分支 $local 未关联远程分支"
    else
        git rev-list --left-right --count "$remote...$local" | read local_count remote_count
        if [ $local_count -eq 0 ] && [ $remote_count -eq 0 ]; then
            echo "分支 $local 与远程 $remote 完全同步"
        else
            [ $local_count -gt 0 ] && echo "分支 $local 有 $local_count 个未推送到远程 $remote 的提交"
            [ $remote_count -gt 0 ] && echo "远程 $remote 有 $remote_count 个本地 $local 未拉取的提交"
        fi
    fi
done

这个命令会:

  • 遍历所有本地分支
  • 检查分支是否关联了远程分支
  • 统计本地与远程分支的提交差异数量
  • 输出清晰的同步状态、未推送/未拉取的提交数

内容的提问来源于stack exchange,提问作者Tryer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:12:59