# git work flow ## 分支定義 - 請先閱讀 [[branch_usage]] - 分支策略 - master(主要分支) - uat(測試、驗收分支) - release(正式發佈分支) - feature branch - hotfix 1. master、uat、release為長期維護分支,每個版本為獨立。 2. hotfix只在release進行作業,除非必要性再使用cherry pick回master。 3. 開發人員分配至工作時,按照討論的分支名稱建立feature branch,完成後push 至remote branch,通知審查,驗證無誤後併回master。 1.開發人員新增branch=>完成修改。 2.開發人員push remote,並通知審核人員。 3.審核人員pull remote,進行審查。 4.完成審查後,merge commit to master。 5.移除遠端開發分支。 4. 每星期固定將master併入uat發佈至測試叢集進行驗收,uat驗收完成後併入release並發佈至正式環境。 ## 進行push repo `請先進行pull,確認分支已是最新版再push` ## 工作流程 1. 每週會議討論欲進行工作項目並定義工作類型、分支名稱,每次僅變更一個項目並新增分支。 - 簽入訊息格式說明-[[message_format]] ```bash # @type # ci、docs、feat、fix、perf、refactor、style、test # @branch name # 分支名稱,簡單描述工作項目,過長則使用縮寫 git branch issue/{@type}/{@branch name} ``` --- 2-1. 開發人員本地功能開發歷程簽入 - 按照進行事項分類加入tracking - 按照分類使用快捷指令 - 填寫訊息簽入 ```bash # 確認目前分支位置 git branch # 移動至正確分支,若上述確認無誤則跳過此步驟 git checkout {@local branch name} # 加入追踨路徑下所有檔案或單個檔案 # @path 例如 . 為本路徑下所有檔案,或@file ./docs/training/git_work_flow.md 單個檔案 git add {@path or @file} # 確認檔案狀態 git status # 使用指令簽入訊息 # @type 按照message format分類 git add{@type} ``` 2-2. 功能完成後,推送至git server,並通知審查人員分支名稱。 ````bash # @branch name # 遠端分支名稱,預設local branch name相同 git push --up-stream {@branch name} ```` --- 3. 測試環境部署 - 單元測試 - 功能測試 - 探索測試 ```bash # 目前僅提供一覽表.net6版本可使用deploy-ulist.sh # 預設環境為debug # 詳細參數說明 deploy-ulist.sh -h ./deploy/docker/deploy-ulist.sh --image-build --run ## 清除容器 ./deploy/docker/deploy-ulist.sh --down ``` --- 4. 發現錯誤、問題通知開發人員修正,完成後push更新後再次進行上述流程。 - 將本支名稱複製至skype貼上,並通知審查人員進行工作。 --- 5. 通過審查後, 開發人員移至主要分支,並同步至最新,準備進行合併。 ```bash git checkout master git pull ``` --- 6. 合併分支使用merge --squash,保持主要分支整潔,該功能會將工作項目分支的所有commit進行整併並壓縮成一個commit簽入,開發人員請將本次工作項目歷程重要訊息按照[[message_format]]整理再簽入。 ```bash # 確認目前分支為master git branch # 與工作項目分支進行合併 # branch name為第一個步驟中討論的工作分支名稱 git merge --squash {@branch name} # 若有衝突,請解決版本差異,無衝突則進行commit # 確認本次異動檔案已加入tracking, 若無請使用git add加入 git status # 使用預設快捷指令進行簽入 # # @type 按照工作類型使用相對應的指令 # ci、docs、feat、fix、perf、refactor、style、test git add{@type} ``` --- 7. 合併完成後,推送至remote repo,確認工作項目結束 - 移除遠端工作分支 - 移除本地工作分支 ```bash # 推送至git server git push # 移除遠端工作分支 # @remote branch name # 遠端分支名稱,預設local branch name相同 git push origin --delete {@remote branch name} # 移除本地端工作分支 # @local branch name # 本地分支名稱,為第一個步驟商議的工作分支名稱 git branch -D {@local branch name} ``` --- 8. 恭喜,完成本次工作項目,通知維運部署人員進行發佈後請接續下一個工作或是休息片刻。 [//begin]: # "Autogenerated link references for markdown compatibility" [branch_usage]: branch_usage.md "分支的應用" [message_format]: ../ci/message_format.md "簽入訊息格式" [//end]: # "Autogenerated link references"
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up