git ls-remote --heads origin 是唯一能实时验证远程分支存在的命令,它绕过本地缓存直接查询服务器,输出如 a1b2c3d refs/heads/main,需用 awk 和 sed 提取分支名,不创建跟踪分支、不触发 fetch,适合 CI 或排查分支同步问题。

想确认远程仓库到底有哪些分支,别信 git branch -r 的输出——它只反映你本地缓存的快照,不是实时状态。
git ls-remote --heads origin 是唯一能验证“此刻远程真有啥”的命令
它绕过本地 .git/refs/remotes/,直接向远程服务器发起一次只读查询,返回原始 refs/heads/ 列表。适合 CI 脚本、排查别人刚推但你看不见的分支、或怀疑本地引用过期时用。
- 输出格式是
a1b2c3d refs/heads/main,需用awk '{print $2}' | sed 's/refs\/heads\///'提取干净分支名 - 不创建任何本地跟踪分支,也不触发
fetch,纯验证存在性 - 防火墙、权限不足或网络不通时会直接失败,不会 fallback 到缓存
- 想查特定前缀分支?加
grep:例如git ls-remote --heads origin | grep "feature/"
git remote show origin 显示的是工作流关系,不是分支清单
它不列出所有分支,而是聚焦于「你本地怎么跟远程协作」:哪些本地分支配置了 git pull、哪些已推但未合并、哪些远程分支被标记为 [stale](说明已被删但本地没清理)。
GitHub 仓库备份技能 - 将 OpenClaw 工作空间自动或手动备份至 GitHub 私有仓库。支持自动定时备份和手动交互式配置,引导完成 Token 配置、仓库创建、首次备份及定时任务设置。用途:(1) 首次设置 (2) 日常备份。
- 看到
[stale]分支?立刻执行git remote prune origin清理 - 看不到某些新分支?先
git fetch --all,再跑git remote show origin - 输出里
Local branches configured for 'git pull'和Local refs to push这两块才是关键,别只扫上面几行分支名
git branch -a 和 git branch -vv 都依赖本地 fetch 缓存
它们显示的是你上次 git fetch 后保存的记录,不是远程实时状态。尤其新人克隆后第一次运行 git branch -r,往往只看到 origin/main 和 origin/develop,其他全“消失”了。
-
git branch -a输出里的remotes/origin/xxx全是缓存,远程删了它也不会自动消失 -
git branch -vv的[origin/main: ahead 2, behind 1]状态必须先git fetch才刷新,否则滞后 - 要让缓存相对可靠:日常用
git fetch --prune替代git fetch,自动清理已删除分支的残留引用
真正容易被忽略的点是:Git 没有“远程分支监控”机制,所有查看命令都是单次拉取快照。你得自己决定什么时候该 fetch、什么时候该 ls-remote 直连验证——尤其是当多人频繁推删分支时,缓存和现实的偏差会比想象中更快出现。

















