Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Git flow 與團隊合作

Git flow 與團隊合作

Git Flow 進階操作與團隊合作

Bo-Yi Wu

April 28, 2016
Tweet

More Decks by Bo-Yi Wu

Other Decks in Technology

Transcript

  1. 7

  2. Support branch • Feature – 開發新功能,從 develop 分⽀出來,完成後 merge 回

    develop • Release – 準備 release 版本,從 develop 分⽀出來,只修 bugs, 完成後 merge 回 develop 和 master • Hotfix – 重⼤ bugs 修復,從 master 分⽀出來,完成後 Merge 回 develop 和 master 9
  3. Create branch • Master • Develop • Feature Merge Branch

    • Master • Develop Code Conflict • Master • Develop 該從哪邊拉 branch 要 merge 回哪個 branch 要解決多次相同 Conflict 12
  4. 對團隊來說 • 開發者不易瞭解整個 Git flow • 開發者不知道從哪個 Branch 繼續開發 •

    開發完成後該 merge 回 master 或 develop? • 需要解決多次衝突 (Merge 回多個分⽀) 13
  5. Github 流程 • 開發都從 master branch 開分⽀ • 隨時都可以發 Pull

    Request • Review 過的 Pull Request 才可以 Merge • 隨時都可以發佈新版本 18
  6. Github Flow 優勢 • 只需要維護 Master 分⽀ – 禁⽌任何開發者使⽤ git

    push origin master –f – 請將 master 設定無法使⽤ –f 覆蓋 • 開發者容易理解及學習 • 管理者⽅便 Code Review 及發佈新版 – 不⽤再擔⼼少 Merge branch – 不⽤再擔⼼開發⼈員玩壞 branch 19
  7. 20

  8. 上 Hotfix 版本 Tag 上 production • git checkout –b

    hotfix 1.0.0 • git commit –a –m ‘xxxx’ • git tag –a 1.0.1 –m ‘1.0.1’ • git checkout master • git cherry-pick commit-id Master 上 production • git commit –a –m ‘xxxx’ • git tag –a 1.0.1 –m ‘1.0.1’ 23
  9. 24 Tag 1.0.0 Patch-1 Tag 1.0.1 Patch-1 Commit C Commit

    A Commit B Tag 上 production git cherry-pick patch-1
  10. Git commit • 標題不要過長 (請勿超過 50 字元) • 標題請務必連結上 Issue

    Track System – jira, github, redmine… 等 • 內容請補上 What, Why and How – 或者是在 Issue Track 上描述清楚 • 不要紀錄無關緊要的 commit – 像是 fix typo, update readme … 等 26
  11. 為什麼要 Code Review • 降低 Production 出包機率 • 可以學習 coder

    為什麼要這樣寫 • 可以學習 reviewer 會怎麼建議 • 團隊素質⽔準提⾼ 28
  12. 29 Fix Issue Code Review Fix Issue Code Review Fix

    issue git commit –a –m ‘fix typo’ git commit –a –m ‘update readme’ git commit –a –m ‘fix typo’
  13. Git log • git commit –a –m ‘fix typo 1’

    • git commit –a –m ‘fix typo 2’ • git commit –a –m ‘fix typo 3’ • git commit –a –m ‘fix typo 4’ • git commit –a –m ‘fix typo 5’ • git commit –a –m ‘fix typo 6’ 30
  14. git reset • git reset --soft HEAD^ – 合併多個 commit

    – 修改上⼀個 commit message • git reset --hard HEAD^ (⼩⼼使⽤) – 回復到上⼀個 commit 狀態 – 這次修改,但是尚未 commit 的更動會消失 34
  15. 37

  16. 38

  17. 43

  18. 48

  19. 51