開發者鍵入git clone后,git會將遠端所有的代碼和branchs下載到開發者本地。
開始覺得很奇怪,git branch只看到一個master branch。通過git banch -r可以看到其他分支,git banch -r看到的並不是遠端服務器的分支。而是本地的遠端分支。
git clone后在remote/origin repository區保存一份和此時遠端分支一模一樣的代碼和branchs,而且該區域是不能修改的。
該區域不同於本地倉庫。所以本地倉庫要想獲取其他分支,需要從本地的遠端區域拉出另外的分支。而新拉出的分支時存儲在local repository區域里,這個區域是可以修改的,也就是git branch看到的那些branchs,git checkout -b master origin/master不是從遠端拉出一個branch,而是從本地的遠端區域里的。
這樣后,git fetch就是更新本地的遠端代碼區域(remote/origin repository)的數據同服務端的代碼保持一致。git pull,就是把remote/origin repository區域中的相應的branch(已更新到服務端最新代碼) merge到本地區域(local repository)的branch上。