首页/开发/Git 与协作速查/git fetch --prune 清理远端跟踪引用
Git 基础与命令88 条

git fetch --prune 清理远端跟踪引用

删除远端已清除的本地下游引用:git fetch --prune 或 git remote prune origin;可设 fetch.prune=true 作为默认行为。

Git 与协作速查开发更新于 2026-10-13

fetch --prune 是什么

远端分支被删除后,本地的远端跟踪引用不会自动消失,git branch -r 依旧列着那些已经不存在的分支。git fetch --prune 或 git remote prune origin 会把这些失效的跟踪引用清掉,让本地视图与远端保持一致。也可以把 fetch.prune 设为 true,让每次抓取都自动清理,省去手动操作。它只清理跟踪引用,不会碰你的本地分支。

基本信息

用途清掉远端已删除分支的本地跟踪引用
写法git fetch --prune / git remote prune origin
默认化git config --global fetch.prune true
影响范围仅远端跟踪引用,不动本地分支
平台任意 Git 客户端

典型使用场景

  • 团队清理远端分支后,本地列表仍显示旧分支
  • 定期维护本机视图,让分支列表与远端一致
  • 排查 push 报错,确认目标分支是否已被删除
  • 搭配自动清理配置,省去每次手动执行
  • 核查某个分支是否真的已从远端移除
  • 新人拿到的旧克隆需要同步最新的分支状态

常用示例

常用示例
git fetch --prune                 # 抓取并清理失效引用
git remote prune origin           # 只清理指定远端
git branch -r                     # 复核远端分支列表
git config --global fetch.prune true   # 让每次 fetch 都自动清理

相关写法对比

写法作用
fetch --prune抓取同时清理失效的远端跟踪引用
remote prune只清理,不抓取新内容
fetch.prune=true把清理设为抓取的默认行为
团队删除远端分支后,本地 git branch -r 仍列出旧分支时,用它恢复一致;这属于视图同步,不涉及内容丢失。
清理后再看分支列表仍可能保留本地同名分支,那是两码事:本地分支是否删除需要你自己判断。

分支清理的推荐节奏

  • 抓取时默认带上清理,避免失效引用长期堆积
  • 清理后 git branch -r 复核远端分支视图
  • 本地分支另用 git branch -d 或 -D 处理,两件事分开做
  • 定期整理,别等列表到几百条时再一次性收拾

易错点

  • prune 只清理远端跟踪引用,不会删除你的本地分支,别指望它一次清干净
  • 本地仍持有旧分支的合并记录时,是否删除本地分支要自行判断,工具不会代你决定
  • 没开自动清理又长期不手动执行,分支列表会持续积累失效条目,干扰判断
  • prune 之后若有基于旧跟踪引用的脚本,可能因引用消失而失败,先确认依赖关系
  • 把 prune 当成清理仓库空间的命令,它不处理对象数据,体积问题需要另找手段

数据来源与参考

  • Git 官方文档:git-fetch(--prune)
  • Git 官方文档:git-remote(prune)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌