在開發專案時,可能同時會有多人在開發同一功能或修復錯誤,也可能會有多個發佈版本的存在,並且需要針對每個版本進行維護,這時候便需要分支的存在,
上圖表示了在Master中分支了藍色與黃色的branch,代表著同時對於B這個點進行兩種不同的處理,而分開的分支最後可以與其他的分支進行合併,所以當進行額外的開發時,可以在分支中進行開發,等到都確認完全後再將分支所處理個程式合併在Master中。
(圖片來源 : 連猴子都能懂得Git入門指南)
HEAD是一個指標,它代表著現在只向哪一個分支,通常可以把它看成 "目前所在的分支" 。
當在master中commit了一個檔案,就會產生一個Master的節點,而HEAD指向了這個節點,代表著目前我們所在的是這一個地方。
在專案資料夾中新增一個index.html並將他commit上去產生一個master的節點。
在master中在新增一個commit後,會在原本的節點上面在產生一個新的節點,而HEAD則移動到第二個節點上,表示目前指向的是新的節點內容。
在index.html中新增內容並將他commit上去產生第二個master的節點。
上面新增了兩個commit的節點,而HEAD目前是在第二個節點上,可以使用git log
來查看commit的紀錄。
查看到commit紀錄後便可以使用git checkout commit前四碼
來將HEAD回到指定的commit紀錄上,使用git checkout b01e
將HEAD移動到上一個commit紀錄(index.html沒有內容)。
可以使用git checkout master
來回到最新的commit紀錄。
在簡介中提到了建立分支的用處,在這一節中則使用git的指令建立一個新的分支。
利用git branch issue
來建立一個名叫"issue"的分支,使用git branch
可以確認目前這個專案中總共有多少分支,而分支前面的*
代表著現在HEAD所指向的分支,也就是現在的位置。
由於HEAD目前是指向master,代表著目前對於專案所有的變動都會更改到master本身,不會對issue這個分支造成影響,所以可以使用git checkout issue
來移動到issue這個分支上,並且一樣可以使用git branch
來確認是否有移動到指定分支上。
可以在git branch
上看到*
已經移動到issue上,代表我們已經將HEAD移動到issue分支上。
在issue分支中,對index.html的內容進行更改並將他commit。
代表著issue新增了一個commit節點,並且HEAD移動到了新的commit節點上。
HEAD目前的位置是在issue所建立的commit上,可以使用git checkout master
將HEAD移動到master上來觀看master的數據是否有被更動。
可以看到在issue分支上新增的<h2>在issue分支中進行修改</h2>
這行程式碼不見了,代表在不同分支進行檔案變更並不會影響到其他分支的內容。
參考資料 :
連猴子都能懂得Git入門指南
掌握 Git 與 Github 程式時光機