Bitbucket新建分支后执行git pull无法拉取该分支如何解决
问题根因
这个延迟问题本质是Bitbucket分布式节点的元数据缓存导致的:你在网页端创建分支的操作首先会写入中心节点,需要等待缓存同步到所有边缘接入节点后,本地的拉取请求才能识别到新分支的存在。HTTPS和SSH协议走不同的接入集群,所以切换协议初期会命中未缓存的集群,看起来问题消失,等对应集群同步到旧缓存后问题会复现。
另外git pull默认仅拉取当前本地绑定的远端分支的更新,不会主动同步全量远端分支元数据,也会加剧你看不到新分支的情况。
可用解决方法
- 优先用全量元数据同步命令替代直接执行
git pull:
每次在网页端创建完新分支后,先执行git fetch origin --prune,该命令会强制跳过本地缓存,直接请求远端全量分支、提交的最新状态,同步完成后执行git branch -a就能看到新创建的远端分支,直接执行git checkout 新分支名即可切换使用,不需要等待缓存同步。 - 手动直接绑定远端分支:
如果你明确知道自己创建的分支名,无需等待缓存同步,直接执行git checkout -b 你的分支名 origin/你的分支名,即可直接创建本地分支并绑定到对应远端分支,拉取对应代码。 - 主动触发Bitbucket缓存刷新:
创建完分支后,在网页端给对应分支修改任意描述、或者打一个临时标签再删除,即可触发Bitbucket主动刷新对应分支的缓存,通常1分钟内即可完成全节点同步,不需要等待15~20分钟的自动同步周期。
内容的提问来源于stack exchange,提问作者ElMaya
相关产品推荐
相关产品推荐

