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
31
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
1k
生成式 AI CodeGPT 開發經驗談
appleboy
0
2.7k
打造 MLOps 平台 改善 AI 模型開發流程
appleboy
0
2k
自動化監控伺服器工具 - Gatus
appleboy
0
3.7k
Drone CI/CD 自動化測試及部署
appleboy
1
450
初探 Infrastructure as Code 工具 Pulumi
appleboy
2
3.4k
Introduction to Open Policy Agent
appleboy
0
1.8k
善用 Go 語言效能測試工具來提升執行效率
appleboy
2
4.3k
用 Go 語言打造多台機器 Scale 架構
appleboy
1
4.5k
Other Decks in Technology
See All in Technology
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
120
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
210
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
180
Engineer Career Talk
lycorp_recruit_jp
0
160
AIチャットボット開発への生成AI活用
ryomrt
0
170
The Rise of LLMOps
asei
7
1.4k
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
250
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
120
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
410
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
750
Featured
See All Featured
Practical Orchestrator
shlominoach
186
10k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Building Your Own Lightsaber
phodgson
103
6.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
Designing for humans not robots
tammielis
250
25k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Docker and Python
trallard
40
3.1k
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