iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
自我挑戰組

30天從零到有,帶你進入程式的世界系列 第 16

[Day 16] Git 4: 使用分支(branch)

  • 分享至 

  • xImage
  •  

為什麼使用分支?

  • 當越來越多同伴一起在同一個專案工作的時候,不能這麼隨興的想 Commit 就 Commit,這時候分支就很好用。
    想要增加新功能, 或是修正 Bug,或是想實驗新做法, 都可以另外做一個分支來進行,等做完確認沒問題再合併回來,不會影響正在運行的產品線。

開始使用分支

  • git branch 列出當前儲存庫中所有的本地分支

  • git branch <branch-name> 創建一個新的分支
    例如我想要建立一個cat分支

  • git branch cat 在目前的位置新增一個cat分支
    https://ithelp.ithome.com.tw/upload/images/20230927/20162648oEPy0n880Z.png
    https://ithelp.ithome.com.tw/upload/images/20230927/20162648pEXEvncb6u.png

  • git branch -d <branch-name> 刪除指定的分支(不可刪除當前分支)

  • git checkout <branch-name> & git switch <branch-name> 切換到指定的分支

  • git checkout -b <branch-name> 創建一個新的分支並立即切換到該分支

  • 分支改名

    1. 確保不在要更改名稱的分支上。如果在該分支上,先切換到其他分支。
      git checkout <other-branch>
    2. git branch -m <old-branch-name> <new-branch-name>

常見的分支誤解

  1. 分支像一張貼紙,它是貼在某一個 Commit 上面
    https://ithelp.ithome.com.tw/upload/images/20230927/20162648gqG1bDu5o2.png

  2. 做了一次新的 Commit 之後,這個新的 Commit 會指向它的前一個 Commit, 同時 HEAD 也跟著前進
    https://ithelp.ithome.com.tw/upload/images/20230927/20162648KZlWPJMrPy.png

  3. 一個分支不夠,那就來兩個。
    透過指令 git branch cat 開了一個新的分支cat
    https://ithelp.ithome.com.tw/upload/images/20230927/20162648xRbQKEUbLZ.png

  4. 接著執行 git checkout cat 指令切換到 cat 分支
    https://ithelp.ithome.com.tw/upload/images/20230927/20162648tLfLaqTMmi.png

  5. 如果做了新的commit, cat 分支這張貼紙就指向最新 Commit 上,HEAD 也會跟著移動
    https://ithelp.ithome.com.tw/upload/images/20230927/201626482Qc7nlfkgq.png

合併分支:merge

  • 從 master 分支開了一個 cat 分支,並且做了兩次 Commit

    1. 新增 cat.html
    2. 新增 dog.html
      https://ithelp.ithome.com.tw/upload/images/20230927/20162648Xe94JuTS5b.png
  • 事情完成後, 想要 cat 分支合併進 master 分支的話

    1. 先切回 main 分支:
      git checkout main

    2. 使用 git merge 指令
      git merge cat

  • 現在 master 分支也有cat1.html 跟 cat2.html
    會出現 fast forward ⇒ 代表main 收割了 cat 分支作的事情
    https://ithelp.ithome.com.tw/upload/images/20230927/20162648dHYoM8QhnJ.png
    https://ithelp.ithome.com.tw/upload/images/20230927/20162648VEtsDmbyQK.png

  • 如果都用cat (較前面的分支) 去merge 或是 merge main, 會顯示已經是最新的了

另一種合併分支的方式:rebase

  • git rebase cat: 將 dog分支剪下來貼在cat分支後面
    https://ithelp.ithome.com.tw/upload/images/20230927/20162648vW56ur2FGS.png
    https://ithelp.ithome.com.tw/upload/images/20230927/20162648wbEhdjjZvH.png
  • 我們可以想成: git rebase cat 就是將目前分支的內容剪下來貼在cat分支的上面
    https://ithelp.ithome.com.tw/upload/images/20230927/20162648nBzZSZYsmR.png
  • rebase 產生衝突的話 ⇒ 把衝突檔案處理完後
    1. git add index.html
    2. git rebase —-continue

上一篇
[Day 15] Git 3: HEAD 是什麼?
下一篇
[Day 17] Git 5: 修改紀錄
系列文
30天從零到有,帶你進入程式的世界30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言