我在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信息,因此我再次切換分支的時候,就提示有代碼沒有更新。