Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Git flow 與團隊合作
Search
Bo-Yi Wu
April 28, 2016
Technology
0
34
Git flow 與團隊合作
Git Flow 進階操作與團隊合作
Bo-Yi Wu
April 28, 2016
Tweet
Share
More Decks by Bo-Yi Wu
See All by Bo-Yi Wu
如何設計一套具備 Container 容器化技術的 CI/CD 平台?
appleboy
0
1.2k
生成式 AI CodeGPT 開發經驗談
appleboy
0
2.9k
打造 MLOps 平台 改善 AI 模型開發流程
appleboy
0
2.1k
自動化監控伺服器工具 - Gatus
appleboy
0
3.8k
Drone CI/CD 自動化測試及部署
appleboy
1
470
初探 Infrastructure as Code 工具 Pulumi
appleboy
2
3.5k
Introduction to Open Policy Agent
appleboy
0
1.9k
善用 Go 語言效能測試工具來提升執行效率
appleboy
2
4.3k
用 Go 語言打造多台機器 Scale 架構
appleboy
1
4.6k
Other Decks in Technology
See All in Technology
Culture Deck
optfit
0
330
FastConnect の冗長性
ocise
1
9.6k
プロセス改善による品質向上事例
tomasagi
1
1.6k
データ基盤の成長を加速させる:アイスタイルにおける挑戦と教訓
tsuda7
3
650
AndroidデバイスにFTPサーバを建立する
e10dokup
0
240
【Developers Summit 2025】プロダクトエンジニアから学ぶ、 ユーザーにより高い価値を届ける技術
niwatakeru
2
890
オブザーバビリティの観点でみるAWS / AWS from observability perspective
ymotongpoo
7
1k
現場の種を事業の芽にする - エンジニア主導のイノベーションを事業戦略に装着する方法 -
kzkmaeda
2
1.5k
Tech Blogを書きやすい環境づくり
lycorptech_jp
PRO
0
120
インフラをつくるとはどういうことなのか、 あるいはPlatform Engineeringについて
nwiizo
5
2.1k
Data-centric AI入門第6章:Data-centric AIの実践例
x_ttyszk
1
370
All you need to know about InnoDB Primary Keys
lefred
0
120
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
Building Adaptive Systems
keathley
40
2.4k
Designing for humans not robots
tammielis
250
25k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
29
2.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
51k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
Designing Experiences People Love
moore
139
23k
A designer walks into a library…
pauljervisheath
205
24k
Designing for Performance
lara
604
68k
Transcript
團隊合作 Git tips and flow Bo-Yi Wu 2016.04.21 1
關於我 http://blog.wu-boy.com/ https://github.com/appleboy https://www.facebook.com/appleboy46 2
⼤綱 • Git ⼯作流程介紹 • Git 使⽤法則及⼩技巧 3
先來看看團隊開發流程 4
5 1.Develo p 2. Pull Request 3. Code Review 4.
Deploy
Git flow 早先 Git 開發模式 6
7
Main Branch • Develop – 最新的開發分⽀ • Master – Production
專屬分⽀ 8
Support branch • Feature – 開發新功能,從 develop 分⽀出來,完成後 merge 回
develop • Release – 準備 release 版本,從 develop 分⽀出來,只修 bugs, 完成後 merge 回 develop 和 master • Hotfix – 重⼤ bugs 修復,從 master 分⽀出來,完成後 Merge 回 develop 和 master 9
Git flow 詳細流程可以參考 https://goo.gl/XIThFY 10
有沒有覺得好多 Branch 搞得好複雜 11
Create branch • Master • Develop • Feature Merge Branch
• Master • Develop Code Conflict • Master • Develop 該從哪邊拉 branch 要 merge 回哪個 branch 要解決多次相同 Conflict 12
對團隊來說 • 開發者不易瞭解整個 Git flow • 開發者不知道從哪個 Branch 繼續開發 •
開發完成後該 merge 回 master 或 develop? • 需要解決多次衝突 (Merge 回多個分⽀) 13
PM: 那個新功能沒上 Production RD: 抱歉忘記 Merge 回 Master (回去檢查看看是不是忘記 Merge?)
14
搞得好複雜 技術主管管理不易 15
Github Flow 16
只有⼀個 Branch 叫 Master 不需要知道其他 Branch 作⽤ 因為最終都會合併到 Master 分⽀
17
Github 流程 • 開發都從 master branch 開分⽀ • 隨時都可以發 Pull
Request • Review 過的 Pull Request 才可以 Merge • 隨時都可以發佈新版本 18
Github Flow 優勢 • 只需要維護 Master 分⽀ – 禁⽌任何開發者使⽤ git
push origin master –f – 請將 master 設定無法使⽤ –f 覆蓋 • 開發者容易理解及學習 • 管理者⽅便 Code Review 及發佈新版 – 不⽤再擔⼼少 Merge branch – 不⽤再擔⼼開發⼈員玩壞 branch 19
20
21 1.Develop 2. Pull Request 3. Code Review 4. Deploy
Github Flow 快速上版
該如何制訂 Production 編號 請善⽤ git tag 來 release production 22
上 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
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
團隊 Git 使⽤法則 25
Git commit • 標題不要過長 (請勿超過 50 字元) • 標題請務必連結上 Issue
Track System – jira, github, redmine… 等 • 內容請補上 What, Why and How – 或者是在 Issue Track 上描述清楚 • 不要紀錄無關緊要的 commit – 像是 fix typo, update readme … 等 26
27 Assign Issue Create Branch Fix issue Code Review Testing
為什麼要 Code Review • 降低 Production 出包機率 • 可以學習 coder
為什麼要這樣寫 • 可以學習 reviewer 會怎麼建議 • 團隊素質⽔準提⾼ 28
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’
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
31 https://github.com/h5bp/Front-end-Developer-Interview-Questions/pull/241/ commits
Merge 到 Master 分⽀前 請務必 squash your commit. 32
Two way to squash your commit • Git reset (⼀般⽤法)
• Git rebase (進階⽤法) 33
git reset • git reset --soft HEAD^ – 合併多個 commit
– 修改上⼀個 commit message • git reset --hard HEAD^ (⼩⼼使⽤) – 回復到上⼀個 commit 狀態 – 這次修改,但是尚未 commit 的更動會消失 34
Demo 35
git rebase –i commitID -i 互動模式 36
37
38
整理完 commit log 後 請把 master merge 到您的 branch 39
Two way to merge master • git merge master •
git rebase master 40
41 git log --date-order
42 git log --topo-order
43
好處是確保你的 commit 保持在 Log 最上⾯ 之後追 commit log 會比較好找
44
更新⽬前 branch 到最新 git pull --rebase origin master 45
Demo 46
Git diff 好⼯具 diff-so-fancy https://github.com/so-fancy/diff-so-fancy 47
48
Git tips 49
救回已經 commit 的程式碼 git reflog 50
51
Any Question? 52