详细版本见个人博客:Git远程分支的删除与同步
本文主要介绍Git同步远程已删除的分支的方法。
一、删除远程分支命令
删除远程分支命令:
git push origin :readme
或者:
git push origin --delete readme
二、同步本地的远程分支
关键问题:另一个用户使用git fetch
并不能同步获取到readme分支被删除。
git fetch
此命令没有更新的显示,说明并无删除的信息。
然后执行git pull
时,报错:
Your configuration specifies to merge with the ref 'refs/heads/readme'
from the remote, but no such ref was fetched.
这肯定是执行git fetch
时,报错。
git fetch origin readme
fatal: Couldn't find remote ref readme
但检查分支时,发现origin/readme
还存在。
git branch -a
dev
master
* readme
remotes/origin/HEAD -> origin/master
remotes/origin/add-license-1
remotes/origin/dev
remotes/origin/master
remotes/origin/readme
这说明,remotes/origin/*
这些远程跟踪分支,仅仅是远程分支的一个缓存,并且,不能通过git fetch
命令获取到分支删除的更新。
执行命令
git remote show origin
* remote origin
Fetch URL: [email protected]:dta0502/Data-Analysis-In-Action.git
Push URL: [email protected]:dta0502/Data-Analysis-In-Action.git
HEAD branch: master
Remote branches:
add-license-1 tracked
dev tracked
master tracked
refs/remotes/origin/readme stale (use 'git remote prune' to remove)
Local branches configured for 'git pull':
dev merges with remote dev
master merges with remote master
readme merges with remote readme
Local refs configured for 'git push':
dev pushes to dev (up to date)
master pushes to master (up to date)
发现refs/remotes/origin/readme
状态是stale(陈旧的),并且后面有命令提示。
git remote prune origin
Pruning origin
URL: [email protected]:dta0502/Data-Analysis-In-Action.git
* [pruned] origin/readme
或者执行
git fetch -p
在执行fetch之后,删除远程不存在的远程跟踪分支。
三、删除本地多余分支
git checkout master
git branch -d readme
详细版本见个人博客:Git远程分支的删除与同步