Git如何获取本地未推送(未同步)的分支列表?
如何获取Git本地未同步(未推送)的分支列表
嘿,这个问题我之前也碰到过——本地攒了一堆分支,迁移设备前要筛选未推送的确实很头疼。不过Git有几个实用的命令能帮你快速搞定,我给你一步步讲:
方法1:查看所有分支的远程关联与同步状态
先运行这个命令,它会展示每个本地分支的详细同步情况:
git branch -vv
输出的每一行对应一个本地分支,格式大概是这样:
feature/ABC-123 abc1234 [origin/feature/ABC-123: ahead 2] 完成用户中心优化 bugfix/XYZ-789 def5678 修复支付回调超时问题 main ghi9012 [origin/main] 合并最新远程代码
你需要重点关注两种情况:
- 没有
[origin/xxx]标记的分支:比如上面的bugfix/XYZ-789,说明这个分支从未推送到远程仓库,完全是本地独有的 - 带有
ahead N标记的分支:比如feature/ABC-123,说明这个分支比关联的远程分支多了N个未推送的提交
方法2:精准筛选未推送分支
如果分支太多,手动看太麻烦,可以用命令直接筛选:
第一步:先同步远程最新状态(关键!避免误判)
git fetch --all
这一步会拉取所有远程分支的最新提交,确保你看到的状态是准确的。
第二步:筛选从未推送的本地分支
git branch -vv | grep -E '^ \S+ [0-9a-f]+ '
这个命令会过滤出所有没有关联远程分支的本地分支,也就是完全没推过的。
第三步:筛选有未推送提交的分支
git branch -vv | grep 'ahead'
这个会直接列出所有比远程分支新、还有提交没推送的分支。
额外提示
- 对于从未推送的分支,推送时记得用
git push -u origin 你的分支名,这样以后就能自动关联远程分支,方便后续同步 - 审核分支时,可以结合你的Jira工单来判断:已经完成工单的分支如果不需要保留,直接删除就行;还在进行或者需要备份的,再推送到远程
内容的提问来源于stack exchange,提问作者amigo421
相关产品推荐
相关产品推荐

