GitLab远程删除分支后本地仍可检出,原因何在?
为啥GitLab删了分支本地还能检出?
这事儿我太清楚啦!核心原因就是本地Git保留着远程分支的缓存副本,没跟GitLab上的最新状态同步。
Git会把远程仓库(比如你的origin)的分支信息,存在本地的refs/remotes/origin/目录下当缓存。你在Web端删了GitLab上的Processing-points分支后,本地的这份缓存不会自动消失——Git默认不会主动去检查远程分支是否被删除,所以你执行git checkout时,还能找到对应的远程分支引用(也就是你命令里的origin/Processing-points),甚至能检出到一个 detached HEAD 状态,但这时候这个分支在远程已经不存在了。
解决步骤
首先同步本地与远程的分支状态,清理已删除的远程分支缓存:
git fetch origin --prune # 或者简写更方便: git fetch -p这个命令会让本地主动对比远程仓库的分支列表,把那些远程已经删掉的本地远程分支引用彻底移除。
之后再尝试
git checkout Processing-points,就会提示找不到该分支了。如果之前你还基于这个远程分支创建了本地分支,那本地分支依然存在,要是想删掉它:- 如果分支已经合并到主分支,用:
git branch -d Processing-points - 如果分支没合并,需要强制删除:
git branch -D Processing-points
- 如果分支已经合并到主分支,用:
内容的提问来源于stack exchange,提问作者tony497




