git fetch --prune 中 --prune 的含义 一句话解释--prune修剪的作用是清理掉本地那些远程已经删除、但本地还残留的远程跟踪分支引用。详细说明问题背景当你git fetch时Git 会更新本地的远程跟踪分支如origin/main、origin/dev。但有个问题如果远程仓库删除了某个分支默认情况下git fetch不会自动删除你本地对应的origin/xxx引用导致本地残留一堆其实远程已经不存在的分支引用。--prune做什么加上--prune后fetch 时会同步这个删除动作远程删了的分支本地对应的远程跟踪引用也一并清除保持本地和远程一致。举例说明假设远程原来有 3 个分支main、dev、feature-x# 本地远程跟踪分支 origin/main origin/dev origin/feature-x现在远程删除了feature-x然后你执行不加 --prunegit fetch origin# 本地仍然残留 origin/main origin/dev origin/feature-x ← ⚠️ 远程已删除本地还在脏数据加 --prunegit fetch origin --prune# 本地同步清理 origin/main origin/dev ← feature-x 被清除与远程一致 ✅为什么脚本里要用它在你的镜像同步脚本里用--prune很重要保证分支列表准确遍历分支前先 prune避免把远程其实已删除的分支当成有效分支去同步避免同步幽灵分支不加 prune 可能对着一个远程已不存在的origin_ne/xxx做操作导致出错或无效推送保持环境干净长期运行的自动化脚本不清理会累积大量失效引用相关命令对比命令作用git fetch origin更新远程跟踪分支但不删失效的git fetch origin --prune更新 清理远程已删除的跟踪分支git fetch --prune --all对所有 remote 都 fetch prunegit remote prune origin只清理不 fetch单独修剪git branch -r查看当前所有远程跟踪分支可验证 prune 效果补充--prune-tags还有个--prune-tags作用类似但针对标签tag——清理远程已删除的 tag。一般单独使用较少。⚠️ 注意--prune只清理远程跟踪引用origin/xxx不会删除你的本地分支你自己git branch创建的本地分支不受影响所以是安全的可以设为默认行为git config --global fetch.prune true之后每次git fetch自动 prune一句话总结--prune fetch 时顺便清除远程已删除、本地还残留的远程跟踪分支origin/xxx让本地与远程保持一致。它只清理跟踪引用、不动你的本地分支在自动化同步脚本里能避免对幽灵分支误操作。