我在master分支运行git status
或者git checkout master
,提示Your branch is up to date with 'origin/master'.
,从字面上的意思是说当前分支已经是最新的。但是,当我运行git pull
的时候,却获取到了很多更新,这是怎么回事呢?
原因是,当你运行git status的时候,他只是去检查本地的orgin/master的ref信息,如果当前分支和这个ref信息是一致的,就会提示没有更新,因为git设计之初为了尽可能减少网络请求和传输,并不会所有操作都去对比最新的远程信息,因此就出现了这个情况。如果想要一探究竟,可以先运行git fetch
查看远程与本地是否有差异,不过,我一般都是直接运行git pull
,远程没有更新的话就不会有反应,有更新的话就会直接把远程更新拉下来。
但是碰到个问题,当我从master切换到dev的时候,竟然就直接提示我dev不是最新的。我猜想这个原因应该是,git pull
会获取所有分支的远程ref信息,因此我再次切换分支的时候,就提示有代码没有更新。