切换Git master分支显示与origin同步,pull却有更新的疑问
问题原因解析
- 本地的
origin/master是远程分支的本地缓存快照,并非实时的远程服务器状态。执行git checkout master时,Git对比的是本地master分支和这个本地缓存的origin/master,所以提示“同步”仅代表这两个本地分支指针位置一致,和真正的远程服务器master分支状态无关。 - 你切换到master分支的间隙,远程服务器的master分支可能已经有了新提交,但你的本地还没同步这个变化。
git pull本质是先执行git fetch(拉取远程最新分支状态更新本地的origin/master缓存),再将新内容合并到本地master,因此这时候会拉取到新变更。 - 若要提前确认远程是否有更新,切换分支前可以先执行
git fetch origin,更新本地的origin/master缓存后再切换到master,此时的同步提示才是和远程最新状态对齐的。
内容的提问来源于stack exchange,提问作者MartinTTS
相关产品推荐
相关产品推荐

