[教學] git應用-同步遠端單一分支 - 討論區

[教學] git應用-同步遠端單一分支

文章瀏覽次數 954 文章回覆數 0

特種兵

特種兵圖像(預設)

2020-08-15 12:21:45

From:1.161.134.79

我們在 推不上去 這篇文章中有跟大家分享,當有一個新分支被推上去後,如果其他協同開發者的遠端還沒有這個分支怎麼辦?

當時是使用 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 abcgit 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 分支整個抓過來。