iT邦幫忙

0

【學習筆記】Git branch

  • 分享至 

  • xImage
  •  

在開發專案時可能會有多人同時commit和push的狀況,很容易有conflict,這時候就需要使用分支來避免conflict。

branch是git中很重要的概念,透過branch可以分流處理不同的問題,也可以進行多人協作,非常方便。
branch可以想像成是原分支的複製版,會繼承目前的commit和前面所有的commit。在新的分支上進行開發的話,不會影響到原本的分支,也不會影響到其他分支。
https://ithelp.ithome.com.tw/upload/images/20220225/201468294l72nidfCE.png
上圖中可以看到,有main和dev兩個分支,main的commit有C0、C1;dev則是有C0~C4的commit。

建立branch

要建立分支,可以使用git branch <分支名稱>來建立。
https://ithelp.ithome.com.tw/upload/images/20220225/201468296ka9fjBqeE.png
如果要切換分支,可以使用git checkout <branch>git switch <branch>,圖片上的「」符號代表現在所在分支。

checkout就像是移動標記的指令,透過checkout指令可以移動到想要的位置。此外,checkout同時也有復原的作用。
比較新的git將checkout的功能分開成兩個指令:switch(移動)和restore(回復),基本上新舊做法都能使用。

如果要在新建分支的同時切換分支,可以使用git switch -c <branch>(c for create)或git checkout -b <branch>

合併分支

如果想要將兩條不同分支的內容合併以方便版本管理的話,可以使用git merge <branch>git rebase <branch>的方法。

merge

https://ithelp.ithome.com.tw/upload/images/20220302/20146829P5CvTZ0ara.png
如上圖,merge會送出一個特殊的commit,同時繼承自兩條分支的最後一個commit,因此,merge後的main分支可以追溯兩條不同分支的commit。

rebase

相對於merge,rebase有點像是把別條分支的commit剪下貼上過來,使用git rebase <目的地分支> <要移動的分支>(若是要移動目前所在分支,可以不用打後面的部分),可以移動分支。
https://ithelp.ithome.com.tw/upload/images/20220302/20146829nhinWNV6w9.png
如上圖,將new-f分支剪下貼上到main分支,new-f分支變成在main的後面,C2也移動過去變成C2'。
若須要更新main分支到new-f的位置,可以用merge或rebase,讓main快速移動到目前所在位置。
https://ithelp.ithome.com.tw/upload/images/20220302/20146829qdDYhjBBfN.png
https://ithelp.ithome.com.tw/upload/images/20220302/20146829XDeRx2opaj.png

branch常用指令

git checkout -b <branch名稱>:建立新branch並切換過去。
git branch:可以看到所有branch。
git branch -a:可以看到remote上所有的branch。

git rebase <要移到哪個分支>:將branch的進度接回最新進度。
git rebase --continue: 解決衝突後繼續rebase。
git branch -d <branch>: 刪除本地branch。
git merge <branch>: 把目前branch整併回另一個分支。

最後附上圖片中的網站: Learn Git Branch,一個圖像化、可以實作的git學習網站,非常好用!


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

尚未有邦友留言

立即登入留言