wordpress_blog

This is a dynamic to static website.

Git & Github 特訓班 – 3

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 分支

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
Git Branching