操作步骤
git branch -a获取远程分支;
其他人删除远程分支(或直接从gitlab删除);
git branch -a 查看远程和本地所有分支,发现还会显示已删除的分支;
git fetch 后还是如此;
解决办法
git remote show origin 查看远程库,看到远程分支和本地分支的对应关系;
git remote prune origin 删除远程没有,本地有的分支;
相关测试
断网执行git branch -r 依然可以有返回结果集可以得出结论——该命令访问的是本地日志
同理,使用python操作git遇到相同情况该如何解决呢
git删除远程分支后,使用GitPython直接获取远程分支,依然能查到被删除分支
话不多说,直接上代码,解决方法如下:
def branches(self):
"""
获取所有分支
:return:
"""
self.repo.git.remote('prune', 'origin') # 这句很关键,相当于git remote prune origin
repo = Repo(self.local_path)
branches = repo.remote().refs
return [item.remote_head for item in branches if item.remote_head not in ['HEAD', ]]
self.repo.git.remote(‘prune’, ‘origin’)这一句很关键,特此记录