1. 程式人生 > 資訊 >美國外賣 DoorDash 將紐約市告上法庭:不想與餐廳共享使用者資料

美國外賣 DoorDash 將紐約市告上法庭:不想與餐廳共享使用者資料

分支是Git很重要的一個特性,可以把分支簡單理解為一個快照。當初始化倉庫時,預設會有一個master分支,如果我在master分支下新建了一個test分支,那麼test分支就是master的一個快照

使用場景

開發新功能

開發新功能的流程通常是這樣的

  1. 開發一個網站
  2. 為實現某個功能,建立一個分支
  3. 在分支上完成開發工作
  4. 功能開發完畢,並且測試通過後,合併到主分支

程式碼表示

# 從master分支建立pay分支,完成支付功能開發工作
$ git branch pay

# 功能開發完畢,合併pay分支的程式碼
$ git checkout master
$ git merge pay

# 推送到遠端
$ git push

# pay分支已經沒用,可以刪除了
$ git branch -d pay

緊急Bug

很多時候,可能會有這樣的情況:你正在某分支上開發新功能,突然有一個緊急Bug需要修復,工作流程是這樣的

  1. 把未開發完成的功能暫存下
  2. 切換到原先已經發布到生產伺服器上的分支,假設叫master分支
  3. 建立一個為修復bug的分支,完成修復問題
  4. 測試通過後,回到master分支,把修補分支合併進來,推送到生產線上
  5. 切換到之前實現新需求的分支,繼續工作

程式碼表示

# 從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恢復現場,繼續之前的工作

部落格: https://blog.86886.wang
GitHub: https://github.com/wmui