iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 25
3
自我挑戰組

前端之 " wow~原來是這樣啊 "系列 第 25

Day25 不求當個 Git 大師,只求和平相處(分支篇)

  • 分享至 

  • xImage
  •  

大家都說 Git 易學難通,所以我不貪心,只求和平相處啊~

以往在自己的練習當中,屬個人小開發實作,使用 Git 的時機並不多,也不深,僅使用最基本的 clone / add / commit / push。最近在與夥伴的協作中,頻繁的使用了分支功能,深感自己對 Git 的知識不足,用的心慌慌,很怕把東西弄壞!因此利用本篇來重整一下腦中混亂的分支知識。

什麼是分支?

在團隊協作中,每個人各自分工負責的項目及功能,但如果大家都在同一個檔案合作,有時可能會出錯,卻不確定來自哪一段,會是不小心覆蓋到對方的內容。因此這時候需要開一支新的分支,各自實作後,確認沒問題再合併。

查看分支

git branch :查看目前所有分支。得知有那些分支,星號代表目前位於哪一個分支上。沒有切任何分支時,默認爲 master。

$ git branch 
* master
  branch1

git branch -v :查看目前所有分支最後一次 commit 的資訊。

$ git branch -v
* branch1 5c8ea60 branch1
  master  7ec2a22 first

切出一個分支

git branch [branchName]:切一個分支。例如切出一個名爲 branch2 的分支。

$ git branch branch2    

git branch -b [branchName] :切一個分支,並且切換到該新分支。

$ git branch -b branch2

切換分支

git checkout [branchName] :切換到另一個分支。例如切回 master。

$ git checkout master

若無該分支,會報錯。可以先用 git branch 確認分支名稱。
若切換分支前,若有編輯檔案,尚未提交,無法切分支,必須先提交或是存放到 stash

刪除分支

git checkout -d [branchName] :刪除分支。例如刪除分支 branch2。

$ git branch -d branch2

但有可能這個分支,尚未與任何分支合併,表示刪掉後這個分支的資訊就沒有保存到其他分支上了。因此 Git 會提醒你以下訊息:

error: The branch 'branch2' is not fully merged.
If you are sure you want to delete it, run 'git branch -D branch2'.

確定刪除,就使用大寫 D,就可以成功刪除了。

$ git branch -D branch2

拿一個遠端分支來開發

在協作中,有時我們需要拿取遠端分支來做開發。當我們 clone 整個專案到本地端後,直接使用 $ git branch ,你可能無法看到你預期的分支。需要使用 $ git branch -a 查看遠端分支,會以紅色字體標示出來。接著我們需要在本地端同步一個遠端分支。

在新版的 git 上,你只需要直接切換過去,就拿到了。如上述所提到的 git checkout [branchName] 。如果無法,就需要做一些事情,首先假設想要拉下來的遠端分支稱爲 testbranch。

  • 我們先在本地端創建一個同名的新分支(不一定要同名)
$ git checkout <testbranch>
  • 再使用 pull 把該分支拉下來更新( 分支前加上 origin 默認爲遠端),pull 其實包含了兩個步驟 fetch(取得遠端分支) + merge (合併到本地創建的分支。
$ git pull origin testbranch

以上爲今天的分支整理,希望可以跟 Git 慢慢當好朋友/images/emoticon/emoticon02.gif


上一篇
Day24 Flex 空間分配 flex-grow / flex-shrink / flex-basis
下一篇
Day26 var 與 ES6 let const 差異
系列文
前端之 " wow~原來是這樣啊 "30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言