Skip to content

Github Flow

ssivart edited this page Jan 18, 2019 · 6 revisions

Github flow簡易流程

PUSH

  1. 先把專案FroggyTaipei/froggy-service fork至自己的倉庫
  2. clone自己倉庫的專案,如ssivart/froggy-service
  3. 開發任何功能或修改bug時皆開新的branch,命名就是以你要做什麼事情,如update-model
$ git checkout -b update-model
  1. 完成後commit,push到自己倉庫
$ git push --set-upstream origin update-model
  1. 發pull request回組織的倉庫,如:
yourname/froggy-service update-model --> FroggyTaipei/froggy-service master
  1. 組織倉庫的專案收到pull request會跑CI測試,這時候大家也可以針對此pull request的內容做code review或留言
  2. CI測試過,程式碼大家也覺得沒問題的話,就可以merge到FroggyTaipei/froggy-service 的master分支
  3. 假設我們的分支update-model已經成功發pull request並merge回遠端倉庫,即可刪掉這個分支
$ git checkout master
$ git branch -D update-model

Master branch update

  1. 我們要從遠端倉庫取最新的程式碼,先新增一個遠端來源,假設命名為upstream
$ git remote add upstream https://github.com/FroggyTaipei/froggy-service
  1. 向遠端來源下載(fetch)新的程式碼
$ git fetch upstream
  1. Merge至本地的master
$ git merge --ff-only upstream/master
  1. 如果要比較本地與遠端的差別
$ git fetch upstream master:temp
$ git diff temp

Feature branch update

將功能分支的變更commit

$ git commit -m "完成A功能"

切回master分支,取得更新

$ git checkout master
$ git fetch upstream
$ git merge --ff-only upstream/master

切回功能分支,用rebase將功能分支接上master

$ git rebase master

有衝突的可能會在rebase途中發生,例如model.py,這時候去編輯衝突的檔案,衝突部份可以問清楚或討論要怎麼更改,改完之後:

$ git add model.py
$ git rebase --continue

如此步驟可能重複數次,直到沒有衝突成功接上分支。在rebase的過程中都可以放棄rebase回到最初,使用git rebase --abort

接著功能分支就可以放心push了

$ git push origin feature-branch

參考

Clone this wiki locally