Git 分支 (branch)
為什麼要用分支 ?
- 多人協作時,不可能都在 master
- 可以讓 master 都是正式版資料,可以開分支來做測試或開發,藉此不影響正式主機分支
branch 介紹
- 分支就像是便利貼,貼在某個 commit 上
用 git checkout 分支名稱時, HEAD 也會依照對應位置指定 commit 位置 - 分支合併,主要是兩個 commit 進行合併
開發分支流程
新增分支: git branch 分支名稱
查看分支: git branch
切換分支: git checkout 分支名稱
刪除分支: git branch -d 分支名稱、-D 是強制刪除
還原上個版本: git reset HEAD^
開發情境: 我有一個正式主機 master 分支,有一個開發分支叫做 develop
合併分支 && 快轉機制
合併分支 : git merge 分支名稱
取消快轉 : git merge 分支名稱 –no-ff
觀看線圖 : git log –oneline –graph
還原合併前狀態 : git reset –hard ORIG_HEAD
快轉機制
- 取消快轉 : 兩個不同任務分支合併時,取消快轉
- 預設使用快轉 : 本地與遠端兩條相同的任務分支時,可以用快轉
用源頭來區分是否需要快轉
解除衝突流程
HEAD 是當前 HEAD 分支位置,develop 是你想合併的分支
<<<<<<< HEAD
<h1>我是標題</h1>
=======
<h2>我是大標題</h2>
/h2>
>>>>>>> develop
- 取消 merge 衝突狀態 : git merge –abort
其他操作
將特定 commit 貼上分支 : git branch 新分支名稱 commit編號
常見分支名稱
- master 預設分支
- develop 開發分支
- feature 開發新功能分支
學習 git 分支
- https://learngitbranching.js.org/
- 挑戰練習
– 請寫成 BLOG
– 請留言分享一個 Git 分支圖,讓其他學員練習
01. $ git branch dev $ git checkout dev $ git commit $ git checkout master $ git merge dev 方法二 $ git commit $ git branch dev |
02. $ git branch dev $ git checkout dev $ git commit $ git commit |
03. $ git commit $ git branch dev $ git commit $ git checkout dev $ git commit $ git checkout master $ git merge dev |
04. $ git commit $ git branch dev $ git checkout dev $ git commit $ git checkout master $ git merge dev –no-ff |
05. $ git commit $ git branch develop $ git checkout develop $ git commit $ git commit $ git checkout master $ git commit $ git merge develop |
06. $ git commit $ git branch dev $ git branch r/master $ git checkout dev $ git commit $ git commit $ git commit $ git checkout master $ git merge dev –no-ff |
07. $ git commit $ git commit $ git branch dev $ git checkout dev $ git commit $ git commit $ git commit $ git checkout master $ git merge dev –no-ff |
08. $ git branch dev $ git checkout dev $ git commit $ git checkout master $ git merge dev –no-ff $ git branch r/master $ git checkout dev $ git commit $ git commit $ git checkout master $ git merge dev $ git checkout r/master $ git merge master |
09. $ git commit $ git branch dev $ git checkout dev $ git commit $ git commit $ git checkout master $ git merge dev –no-ff $ git branch r/master $ git checkout dev $ git commit $ git commit $ git checkout master $ git merge dev |
10. $ git commit $ git branch dev $ git branch dog $ git checkout dev $ git commit $ git checkout dog $ git commit $ git checkout master $ git commit $ git merge dev $ git merge dog |