解决GIT本地的远程分支删不掉的问题技术
问题描述,使用 git branch -av 查看分支,可以看到 origin/ 下面有某个分支,使用 git branch -d 或者 git branch -D 删除提示分支不存在。
本地远程分支删不掉的原因,系远程分支已经被其他终端删除,本地更新后 packed-refs 已经被删除,导致 git branch -d 报找不到分支的错误,需要手动清理 .git/refs/remotes/origin/branch_name。
如下示例:
$ cat .git/packed-refs # pack-refs with: peeled 6d12bad321cbe20e4d32782e2dd217c05cf3daed refs/remotes/origin/master 3f59a50abc9cbd4cf9590f8dc9617ef42dbf3f20 refs/remotes/origin/dev $ git branch -av * dev 95109a3 ... fix-20161101 fe57263 ... master 2cd49d9 Merge branch 'dev' remotes/origin/HEAD -> origin/master remotes/origin/dev 95109a3 新增定时脚本 remotes/origin/feature-20161101 95109a3 新增定时脚本 remotes/origin/master 2cd49d9 Merge branch 'dev' remotes/origin/rhett b0bcd11 ... $ ls .git/branches total 8.0K drwxrwxr-x. 2 www www 4.0K Aug 22 11:31 . drwxrwxr-x. 8 www www 4.0K Nov 1 13:22 .. $ ls .git/packed-refs -rw-rw-r--. 1 www www 159 Aug 22 11:31 .git/packed-refs $ ls .git/refs/remotes/origin/ total 28K drwxrwxr-x. 2 www www 4.0K Nov 1 13:23 . drwxrwxr-x. 3 www www 4.0K Aug 22 11:31 .. -rw-rw-r--. 1 root root 41 Oct 31 16:50 dev -rw-rw-r--. 1 root root 41 Nov 1 10:00 feature-20161101 -rw-rw-r--. 1 www www 32 Aug 22 11:31 HEAD -rw-rw-r--. 1 root root 41 Sep 26 10:07 master -rw-rw-r--. 1 root root 41 Oct 28 13:42 rhett $ ls .git/refs/remotes/origin/ total 28K drwxrwxr-x. 2 www www 4.0K Nov 1 13:23 .
上面的操作实例中,rhett 分支在 origin 下存在,但是在 .git/packed-refs 文件中并没有,所以导致这个分支删不掉并且会被显示出来,在 .git/refs/remotes/origin 下将其删除即可。造成这种原因一般是:分支在此处创建,推送到远程库后,远程库被其他终端删除,此处更新导致。
另外使用 git remote prune origin 一样可以清理不存在的远程分支。
相关文章
暂无