我們在 推不上去 這篇文章中有跟大家分享,當有一個新分支被推上去後,如果其他協同開發者的遠端還沒有這個分支怎麼辦?
當時是使用 git remote update
來更新所有的遠端分支,在文中我們也提到比較好的做法是把新分支 pull 回來會比較好。
我們知道在一個專案當中會有很多分支,git remote update
是會把所有的分支依據倉庫全部更新到最新,
就相當於 git fetch --all
這個指令。但有些分支可能還在開發中,或者根本不是你負責的項目,
尤其是在正式環境下,就不適合一次把所有的分支都更新到最新了。
那 git fetch 遠端分支名稱
就可以只單獨更新一個分支,但如果這個分支只在倉庫裡面,
這個使用者因為還沒有 update 遠端的資訊,所以根本還沒有這個分支,那使用 git fetch 遠端分支名稱
這個指令就會出錯。
因此我們應該使用 git checkout -b abc origin/abc
指令。
- checkout 切換分支
- -b 本地沒有的分支會自己建一個
- abc 本地想要的分支名稱
- origin/abc 遠端倉庫分支的名稱
這個指令幫我們把倉庫的那個分支抓回來更新並且切換過去。
有人會問,那我自己先 git branch abc
再 git pull origin abc
不就好了?
各位要注意的是,當下 git branch abc
是從現在的分支做一個一樣的分支出去,這會有點不同。
也就是說,小明做了一個 abc 的本地分支,是從分支 logo 的 commit 123456 做出來的,
然後做了數個 commit 之後把 abc 推上倉庫。
而小華目前處在 master 分支,他的 commit 是 112233 那這樣直接做一個 abc 分支的話是基於 commit 112233 而不是 123456 喔。
所以上面的指令 git checkout -b abc origin/abc
可想像成是把倉庫原汁原味的 abc 分支整個抓過來。