如何 fetch 所有 Git 分支
拉取所有远程分支信息:git fetch --all(多个远程时全部更新),只更新 origin 用 git fetch origin。fetch 只更新 origin/ 跟踪引用不动本地分支;git branch -a 查看全部分支。
git fetch --all:更新所有远程(origin、upstream 等)的全部分支引用。只有一个远程时 git fetch 或 git fetch origin 即可。fetch 只刷新本地的 origin/xxx 跟踪引用,不会动你的本地分支和工作区,随时可安全执行。
常用组合
git fetch --all --prune # 更新 + 清理远程已删除的分支引用
git fetch --all --tags # 连同所有标签
git branch -a # 查看:本地 + 远程跟踪分支全列出
fetch 之后做什么
fetch 只"同步信息",接下来通常:
git log HEAD..origin/main --oneline # 看远程多了哪些提交
git merge origin/main # 合入当前分支(或 rebase)
git checkout 分支名 # 检出刚 fetch 下来的新分支
把 --prune 设为默认
git config --global fetch.prune true
之后每次 fetch 自动清理已在远程删除的分支引用,git branch -r 不再堆积幽灵分支。
常见问题(FAQ)
Q:fetch --all 和 git pull --all 有什么区别?
pull --all 会先 fetch --all 然后尝试合并到当前分支——多分支更新不是你的意图时会惹麻烦。同步信息用 fetch --all 就够。
Q:为什么 checkout 别人的新分支报不存在?
本地引用没刷新。git fetch 后再 git checkout 分支名。
Q:fetch 会影响正在做的工作吗?
完全不会。它不碰工作区和本地分支,只更新 .git 里的远程跟踪引用——这也是"fetch 先行、看清再合"工作流的基础。