-
Notifications
You must be signed in to change notification settings - Fork 4
Github Flow
MatsuiLin101 edited this page Mar 4, 2019
·
3 revisions
- 先把專案
FroggyTaipei/froggy-service
fork至自己的倉庫 - clone自己倉庫的專案,如
ssivart/froggy-service
- 開發任何功能或修改bug時皆開新的branch,命名就是以你要做什麼事情,如
update-model
$ git checkout -b update-model
- 完成後commit,push到自己倉庫
$ git push --set-upstream origin update-model
- 發pull request回組織的倉庫,如:
yourname/froggy-service update-model --> FroggyTaipei/froggy-service master
- 組織倉庫的專案收到pull request會跑CI測試,這時候大家也可以針對此pull request的內容做code review或留言
- CI測試過,程式碼大家也覺得沒問題的話,就可以merge到
FroggyTaipei/froggy-service
的master分支 - 假設我們的分支update-model已經成功發pull request並merge回遠端倉庫,即可刪掉這個分支
$ git checkout master
$ git branch -D update-model
- 我們要從遠端倉庫取最新的程式碼,先新增一個遠端來源,假設命名為upstream
$ git remote add upstream https://github.com/FroggyTaipei/froggy-service
- 向遠端來源下載(fetch)新的程式碼
$ git fetch upstream
- Merge至本地的master
$ git merge --ff-only upstream/master
- 如果要比較本地與遠端的差別
$ git fetch upstream master:temp
$ git diff temp
將功能分支的變更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