Top Banner
團團團團 Git tips and flow Bo-Yi Wu 2016.04.21 1
52

Git flow 與團隊合作

Apr 12, 2017

Download

Software

Bo-Yi Wu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Git flow 與團隊合作

1

團隊合作Git tips and flow

Bo-Yi Wu2016.04.21

Page 3: Git flow 與團隊合作

3

大綱

• Git 工作流程介紹• Git 使用法則及小技巧

Page 4: Git flow 與團隊合作

4

先來看看團隊開發流程

Page 5: Git flow 與團隊合作

5

1.Develop

2. Pull Request

3. Code Review

4. Deploy

Page 6: Git flow 與團隊合作

6

Git flow早先 Git 開發模式

Page 7: Git flow 與團隊合作

7

Page 8: Git flow 與團隊合作

8

Main Branch

• Develop– 最新的開發分支

• Master– Production 專屬分支

Page 9: Git flow 與團隊合作

9

Support branch• Feature

– 開發新功能,從 develop 分支出來,完成後 merge 回 develop

• Release– 準備 release 版本,從 develop 分支出來,只修

bugs ,完成後 merge 回 develop 和 master

• Hotfix– 重大 bugs 修復,從 master 分支出來,完成後 Merge

回 develop 和 master

Page 10: Git flow 與團隊合作

10

Git flow 詳細流程可以參考https://goo.gl/XIThFY

Page 11: Git flow 與團隊合作

11

有沒有覺得好多 Branch搞得好複雜

Page 12: Git flow 與團隊合作

Create branch

• Master• Develop• Feature

Merge Branch

• Master• Develop

Code Conflict

• Master• Develop

該從哪邊拉 branch 要 merge 回哪個 branch

要解決多次相同 Conflict

12

Page 13: Git flow 與團隊合作

13

對團隊來說• 開發者不易瞭解整個 Git flow• 開發者不知道從哪個 Branch 繼續開發• 開發完成後該 merge 回 master 或

develop?• 需要解決多次衝突 (Merge 回多個分支 )

Page 14: Git flow 與團隊合作

14

PM: 那個新功能沒上 Production

RD: 抱歉忘記 Merge 回 Master( 回去檢查看看是不是忘記

Merge?)

Page 15: Git flow 與團隊合作

15

搞得好複雜

技術主管管理不易

Page 16: Git flow 與團隊合作

16

Github Flow

Page 17: Git flow 與團隊合作

17

只有一個 Branch 叫 Master不需要知道其他 Branch 作用

因為最終都會合併到 Master 分支

Page 18: Git flow 與團隊合作

18

Github 流程• 開發都從 master branch 開分支• 隨時都可以發 Pull Request• Review 過的 Pull Request 才可以 Merge• 隨時都可以發佈新版本

Page 19: Git flow 與團隊合作

19

Github Flow 優勢• 只需要維護 Master 分支– 禁止任何開發者使用 git push origin master –f– 請將 master 設定無法使用 – f 覆蓋

• 開發者容易理解及學習• 管理者方便 Code Review 及發佈新版– 不用再擔心少 Merge branch– 不用再擔心開發人員玩壞 branch

Page 20: Git flow 與團隊合作

20

Page 21: Git flow 與團隊合作

21

1.Develop

2. Pull Request

3. Code Review

4. Deploy

Github Flow 快速上版

Page 22: Git flow 與團隊合作

該如何制訂 Production 編號請善用 git tag 來 release

production

22

Page 23: Git flow 與團隊合作

23

上 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’

Page 24: Git flow 與團隊合作

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

Page 25: Git flow 與團隊合作

團隊 Git 使用法則

25

Page 26: Git flow 與團隊合作

Git commit• 標題不要過長 ( 請勿超過 50 字元 )• 標題請務必連結上 Issue Track System– jira, github, redmine… 等

• 內容請補上 What, Why and How– 或者是在 Issue Track 上描述清楚

• 不要紀錄無關緊要的 commit– 像是 fix typo, update readme … 等 26

Page 27: Git flow 與團隊合作

27

Assign

Issue

Create

Branch

Fix issue

Code Revie

w

Testing

Page 28: Git flow 與團隊合作

28

為什麼要 Code Review

• 降低 Production 出包機率• 可以學習 coder 為什麼要這樣寫• 可以學習 reviewer 會怎麼建議• 團隊素質水準提高

Page 29: Git flow 與團隊合作

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’

Page 30: Git flow 與團隊合作

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

Page 32: Git flow 與團隊合作

Merge 到 Master 分支前請務必 squash your commit.

32

Page 33: Git flow 與團隊合作

Two way to squash your commit

• Git reset ( 一般用法 )• Git rebase ( 進階用法 )

33

Page 34: Git flow 與團隊合作

git reset• git reset --soft HEAD^– 合併多個 commit– 修改上一個 commit message

• git reset --hard HEAD^ ( 小心使用 )– 回復到上一個 commit 狀態– 這次修改,但是尚未 commit 的更動會消失

34

Page 35: Git flow 與團隊合作

Demo

35

Page 36: Git flow 與團隊合作

36

git rebase –i commitID-i 互動模式

Page 37: Git flow 與團隊合作

37

Page 38: Git flow 與團隊合作

38

Page 39: Git flow 與團隊合作

整理完 commit log 後請把 master merge 到您的 branch

39

Page 40: Git flow 與團隊合作

Two way to merge master

• git merge master• git rebase master

40

Page 41: Git flow 與團隊合作

41

git log --date-order

Page 42: Git flow 與團隊合作

42

git log --topo-order

Page 43: Git flow 與團隊合作

43

Page 44: Git flow 與團隊合作

好處是確保你的 commit 保持在 Log 最上面之後追 commit log 會比較好找

44

Page 45: Git flow 與團隊合作

更新目前 branch 到最新git pull --rebase origin master

45

Page 46: Git flow 與團隊合作

46

Demo

Page 47: Git flow 與團隊合作

Git diff 好工具diff-so-fancy

https://github.com/so-fancy/diff-so-fancy

47

Page 48: Git flow 與團隊合作

48

Page 49: Git flow 與團隊合作

49

Git tips

Page 50: Git flow 與團隊合作

救回已經 commit 的程式碼git reflog

50

Page 51: Git flow 與團隊合作

51

Page 52: Git flow 與團隊合作

Any Question?

52