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的時候,卻獲取到了很多更新,這是怎麼回事呢?
在這裏插入圖片描述

原因是,當你運行git status的時候,他只是去檢查本地的orgin/master的ref信息,如果當前分支和這個ref信息是一致的,就會提示沒有更新,因爲git設計之初爲了儘可能減少網絡請求和傳輸,並不會所有操作都去對比最新的遠程信息,因此就出現了這個情況。如果想要一探究竟,可以先運行git fetch查看遠程與本地是否有差異,不過,我一般都是直接運行git pull,遠程沒有更新的話就不會有反應,有更新的話就會直接把遠程更新拉下來。

但是碰到個問題,當我從master切換到dev的時候,竟然就直接提示我dev不是最新的。我猜想這個原因應該是,git pull會獲取所有分支的遠程ref信息,因此我再次切換分支的時候,就提示有代碼沒有更新。
在這裏插入圖片描述

sf上的回答,可以參考:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章