iT邦幫忙

2

Git 學習筆記_04(Git Branch 分支)

  • 分享至 

  • xImage
  •  

Branch簡介

在開發專案時,可能同時會有多人在開發同一功能或修復錯誤,也可能會有多個發佈版本的存在,並且需要針對每個版本進行維護,這時候便需要分支的存在,

https://ithelp.ithome.com.tw/upload/images/20200420/20124767tvLrOpJm19.png

上圖表示了在Master中分支了藍色與黃色的branch,代表著同時對於B這個點進行兩種不同的處理,而分開的分支最後可以與其他的分支進行合併,所以當進行額外的開發時,可以在分支中進行開發,等到都確認完全後再將分支所處理個程式合併在Master中。
https://ithelp.ithome.com.tw/upload/images/20200420/20124767hUSjXSfLJE.png
(圖片來源 : 連猴子都能懂得Git入門指南)

HEAD

HEAD是一個指標,它代表著現在只向哪一個分支,通常可以把它看成 "目前所在的分支" 。

新增第一個commit

當在master中commit了一個檔案,就會產生一個Master的節點,而HEAD指向了這個節點,代表著目前我們所在的是這一個地方。
https://ithelp.ithome.com.tw/upload/images/20200420/201247670stSBPV6rr.png

在專案資料夾中新增一個index.html並將他commit上去產生一個master的節點。
https://ithelp.ithome.com.tw/upload/images/20200420/20124767zG08j53Khu.png

新增第二個commit

在master中在新增一個commit後,會在原本的節點上面在產生一個新的節點,而HEAD則移動到第二個節點上,表示目前指向的是新的節點內容。
https://ithelp.ithome.com.tw/upload/images/20200420/20124767NdMGhKrDMD.png

在index.html中新增內容並將他commit上去產生第二個master的節點。
https://ithelp.ithome.com.tw/upload/images/20200420/20124767MC6rUm2t3i.png
https://ithelp.ithome.com.tw/upload/images/20200420/20124767WBwFZhhbip.png

git checkout commit前四碼 -> 移動到指定的commit節點

上面新增了兩個commit的節點,而HEAD目前是在第二個節點上,可以使用git log來查看commit的紀錄。
https://ithelp.ithome.com.tw/upload/images/20200420/20124767y0DUkiYEgy.png

查看到commit紀錄後便可以使用git checkout commit前四碼來將HEAD回到指定的commit紀錄上,使用git checkout b01e將HEAD移動到上一個commit紀錄(index.html沒有內容)。
https://ithelp.ithome.com.tw/upload/images/20200420/20124767oYCYMXhAuS.png
https://ithelp.ithome.com.tw/upload/images/20200420/20124767nZEEQ1qGit.png

可以使用git checkout master來回到最新的commit紀錄。


git branch 建立分支

在簡介中提到了建立分支的用處,在這一節中則使用git的指令建立一個新的分支。

git branch "分支名稱" -> 建立分支

利用git branch issue來建立一個名叫"issue"的分支,使用git branch可以確認目前這個專案中總共有多少分支,而分支前面的*代表著現在HEAD所指向的分支,也就是現在的位置。
https://ithelp.ithome.com.tw/upload/images/20200420/20124767aa4LIq9vNM.png
https://ithelp.ithome.com.tw/upload/images/20200420/20124767BVYQFyvXXB.png

git checkout 分支名稱 -> 移動到指定分支

由於HEAD目前是指向master,代表著目前對於專案所有的變動都會更改到master本身,不會對issue這個分支造成影響,所以可以使用git checkout issue來移動到issue這個分支上,並且一樣可以使用git branch來確認是否有移動到指定分支上。
https://ithelp.ithome.com.tw/upload/images/20200420/20124767WfJ4YXhCP3.png
可以在git branch上看到*已經移動到issue上,代表我們已經將HEAD移動到issue分支上。
https://ithelp.ithome.com.tw/upload/images/20200420/20124767uc2sX0de4w.png

確認分支中的更動不會影響master

在issue分支中,對index.html的內容進行更改並將他commit。
https://ithelp.ithome.com.tw/upload/images/20200420/20124767ncq0vi5wMo.png
https://ithelp.ithome.com.tw/upload/images/20200420/20124767HGZqDRATwR.png

代表著issue新增了一個commit節點,並且HEAD移動到了新的commit節點上。
https://ithelp.ithome.com.tw/upload/images/20200420/20124767eIAzAPXaLZ.png

HEAD目前的位置是在issue所建立的commit上,可以使用git checkout master將HEAD移動到master上來觀看master的數據是否有被更動。
https://ithelp.ithome.com.tw/upload/images/20200420/20124767NFchFZfem2.png
https://ithelp.ithome.com.tw/upload/images/20200420/20124767yINyCBZeaE.png

可以看到在issue分支上新增的<h2>在issue分支中進行修改</h2>這行程式碼不見了,代表在不同分支進行檔案變更並不會影響到其他分支的內容。

參考資料 :
連猴子都能懂得Git入門指南
掌握 Git 與 Github 程式時光機


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言