美國外賣 DoorDash 將紐約市告上法庭:不想與餐廳共享使用者資料
阿新 • • 發佈:2021-09-17
分支是Git很重要的一個特性,可以把分支簡單理解為一個快照。當初始化倉庫時,預設會有一個master分支,如果我在master分支下新建了一個test分支,那麼test分支就是master的一個快照
使用場景
開發新功能
開發新功能的流程通常是這樣的
- 開發一個網站
- 為實現某個功能,建立一個分支
- 在分支上完成開發工作
- 功能開發完畢,並且測試通過後,合併到主分支
程式碼表示
# 從master分支建立pay分支,完成支付功能開發工作 $ git branch pay # 功能開發完畢,合併pay分支的程式碼 $ git checkout master $ git merge pay # 推送到遠端 $ git push # pay分支已經沒用,可以刪除了 $ git branch -d pay
緊急Bug
很多時候,可能會有這樣的情況:你正在某分支上開發新功能,突然有一個緊急Bug需要修復,工作流程是這樣的
- 把未開發完成的功能暫存下
- 切換到原先已經發布到生產伺服器上的分支,假設叫master分支
- 建立一個為修復bug的分支,完成修復問題
- 測試通過後,回到master分支,把修補分支合併進來,推送到生產線上
- 切換到之前實現新需求的分支,繼續工作
程式碼表示
# 從master分支建立pay分支,開發支付功能 $ git branch pay # 來bug了,但支付還沒有開發完成。儲存一下現場,等bug修復後回來繼續工作 $ git stash # 從主分支切出一個issue01分支,修復bug $ git checkout master $ git checkout -b issue01 # bug修復完成並測試通過,合併issue01分支,推送到遠端 $ git checkout master $ git merge issue01 $ git push # 恢復現場,繼續開發支付功能 $ git checkout pay $ git stash pop
分支管理
建立分支
# 建立pay分支
$ git branch pay
# 切換到pay分支
$ git checkout pay
# 合二為一
$ git checkout -b pay
推送分支
# 把pay分支推送到遠端
$ git push -u origin pay
合併分支
把pay分支的程式碼合併到master分支
$ git checkout master
$ git merge pay
檢視分支
# 檢視本地分支 $ git branch # 檢視遠端分支 $ git branch -r # 檢視所有分支 $ git branch -a # 檢視最後一次提交的資訊 $ git branch -v $ git branch -r -v $ git branch -a -v # 檢視哪些分支合併進了當前分支 $ git branch --merged # 檢視哪些分支未合併進當前分支 $ git branch --no-merged
刪除分支
# 刪除遠端pay分支
$ git push -d origin pay
# 刪除本地pay分支
$ git branch -d pay
刪除分支前要確認分支已經被合併到主分支,否則是無法刪除的。如果確實要放棄已經在分支上修改的工作成果,可以使用-D
強制刪除
儲存現場
當你正在開發一個功能,功能還沒開發完成,突然線上爆了一個Bug需要緊急修復,這時怎麼辦?功能沒完成就直接commit是不合適的,這時候儲存現場功能就派上用場了
在功能分支執行$ git stash
命令,保留一下現場,然後你就可以切換到主分支去修復bug了。bug修復後,切換到功能分支,執行$ git stash pop
恢復現場,繼續之前的工作
GitHub: https://github.com/wmui