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
50
Git flow 與團隊合作
Git Flow 進階操作與團隊合作
Bo-Yi Wu
April 28, 2016
Tweet
Share
More Decks by Bo-Yi Wu
See All by Bo-Yi Wu
What’s MCP && Authorization?
appleboy
0
69
Building a Unified API Gateway for Secure and Scalable Cross-Cloud AI Service
appleboy
0
1.3k
Building MCP (Model Context Protocol) with Golang
appleboy
0
2.5k
如何設計一套具備 Container 容器化技術的 CI/CD 平台?
appleboy
0
1.5k
生成式 AI CodeGPT 開發經驗談
appleboy
0
3.2k
打造 MLOps 平台 改善 AI 模型開發流程
appleboy
0
2.3k
自動化監控伺服器工具 - Gatus
appleboy
0
4.1k
Drone CI/CD 自動化測試及部署
appleboy
1
520
初探 Infrastructure as Code 工具 Pulumi
appleboy
2
3.7k
Other Decks in Technology
See All in Technology
現場データから見える、開発生産性の変化コード生成AI導入・運用のリアル〜 / Changes in Development Productivity and Operational Challenges Following the Introduction of Code Generation AI
nttcom
0
350
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
12
81k
Claude Codeを駆使した初めてのiOSアプリ開発 ~ゼロから3週間でグローバルハッカソンで入賞するまで~
oikon48
10
5.1k
Claude Code Subagents 再入門 ~cc-sddの実装で学んだこと~
gotalab555
10
17k
生成AI時代のセキュアコーディングとDevSecOps
yuriemori
0
130
React19.2のuseEffectEventを追う
maguroalternative
2
520
今この時代に技術とどう向き合うべきか
gree_tech
PRO
2
2.1k
ローカルLLMとLINE Botの組み合わせ その2(EVO-X2でgpt-oss-120bを利用) / LINE DC Generative AI Meetup #7
you
PRO
0
100
「れきちず」のこれまでとこれから - 誰にでもわかりやすい歴史地図を目指して / FOSS4G 2025 Japan
hjmkth
1
330
HR Force における DWH の併用事例 ~ サービス基盤としての BigQuery / 分析基盤としての Snowflake ~@Cross Data Platforms Meetup #2「BigQueryと愉快な仲間たち」
ryo_suzuki
0
240
物体検出モデルでシイタケの収穫時期を自動判定してみた。 #devio2025
lamaglama39
0
240
Zephyr(RTOS)にEdge AIを組み込んでみた話
iotengineer22
0
200
Featured
See All Featured
Navigating Team Friction
lara
190
15k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
600
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Designing for humans not robots
tammielis
254
26k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Thoughts on Productivity
jonyablonski
70
4.9k
For a Future-Friendly Web
brad_frost
180
10k
Documentation Writing (for coders)
carmenintech
75
5.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Designing Experiences People Love
moore
142
24k
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