在軟體開發的過程當中,幾乎都是以團隊為單位在開發,那是否有個共同的機制,可以掌握每個團隊成員的開發進度,也可以讓成員各自獨立開發自己的部分,而不互相影響呢?
以下,我們就要來了解Git重要的核心之一:分支(branch)
假設客戶有個正式上線的網站,位於master分支(藍點),版本是0.1。
上線數日,發現bug要修。
但總不可能邊修邊update,讓使用者看到。也不可能把網站關掉,等修好再上線。
這時,可以開一條hotfixes分支(紅點),master分支與hotfixes分支的內容一模一樣。
換個角度想,這兩條分支,是平行時空,在hotfixes分支所做的任何異動,跟master分支無關,完全無影響。
我們就可以在hotfixes分支做任何事情,也不怕改壞,導致網站掛掉。
等修好,確認OK,就跟master分支合併(merge),合併後的master分支,commit成0.2版。
這樣做的好處就是,我們在處理bug的過程中,網站依舊可以上線,頂多只是有bug。
不只hotfixes,假設客戶想要新增功能,可以再另開develop與feature分支,
每測試一個階段就commit一次,正式上線之前,還可以另開release分支,做最後確認,
測試通過,合併到master分支,成1.0版,
再次發現問題,一樣回到develop與feature分支修改。
新建Angular專案。
一進入Git Bash就會在資料夾旁顯示目前所在的分支(master)。
master是最初預設的分支。
指令git branch可以查看目前有哪些分支,因為專案無任何異動,所以目前只有master分支。
指令 git branch [分支名稱],可以建立新的分支。
目前有兩條分支:master、feature。
指令 git checkout [分支名稱],可以切換分支。
從master分支切換到feature分支。
指令 git checkout -b [分支名稱],可以同時建立與切換分支
在建立hotfixes的同時,直接切換過去。
目前專案有3條分支。
指令 git branch -d [分支名稱],可以刪除分支。
重點注意,無法刪除本身所在的分支。
假設要刪除hotfixes分支,就必須得切換到其他分支,才能執行。
成功刪除hotfixes分支,確認目前專案分支數。
重點注意,若要刪除的分支,本身有commit,且未被合併(merge),無法使用-d刪除。
在feature分支把src資料夾刪掉,並commit。
執行git branch -d feature會收到警告。
意思是說,如果確定要刪除,請使用-D指令。
執行git branch -D feature
確實刪除。
剛剛刪除的範例,成功執行後,git會提供被刪除分支最新的commit ID。
再次建立分支,並加上commit Id。
連同commit紀錄都會復原回來。
稍早說過,分支之間並不會互相影響,可以視為獨立的個體。
接續剛剛的範例。
目前feature分支,有2個commit,最新的commit是刪除scr資料夾。
所以可以預見的是,專案中,不會看到src資料夾。
切換到master分支。
從log可以看出,只有1個commit。
並且scr資料夾出現了,這是因為,master分支並沒有刪除scr資料夾。
那接下來,我們在master分支刪除tslint.json,並且commit。
所以,目前最新的master分支狀態是這樣的:有src資料夾,刪除tslint.json
切換到feature分支。
feature分支狀態:刪除src資料夾,有tslint.json。
藉由以上的範例,了解分支之間的確是不會互相影響的。
本文為觀看網路教學的學習筆記。