Your branch is up to date with 'origin/master'.但是本地代码却不是最新的

我在master分支运行git status或者git checkout master,提示Your branch is up to date with 'origin/master'.,从字面上的意思是说当前分支已经是最新的。但是,当我运行git pull的时候,却获取到了很多更新,这是怎么回事呢?
Your branch is up to date with 'origin/master'.但是本地代码却不是最新的_第1张图片

原因是,当你运行git status的时候,他只是去检查本地的orgin/master的ref信息,如果当前分支和这个ref信息是一致的,就会提示没有更新,因为git设计之初为了尽可能减少网络请求和传输,并不会所有操作都去对比最新的远程信息,因此就出现了这个情况。如果想要一探究竟,可以先运行git fetch查看远程与本地是否有差异,不过,我一般都是直接运行git pull,远程没有更新的话就不会有反应,有更新的话就会直接把远程更新拉下来。

但是碰到个问题,当我从master切换到dev的时候,竟然就直接提示我dev不是最新的。我猜想这个原因应该是,git pull会获取所有分支的远程ref信息,因此我再次切换分支的时候,就提示有代码没有更新。
Your branch is up to date with 'origin/master'.但是本地代码却不是最新的_第2张图片

sf上的回答,可以参考:

https://stackoverflow.com/questions/27828404/why-does-git-status-show-branch-is-up-to-date-when-changes-exist-upstream

你可能感兴趣的:(git)