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 处理,两件事分开做
- 定期整理,别等列表到几百条时再一次性收拾