狠狠撸

狠狠撸Share a Scribd company logo
Git & Git flow
從小木屋到世界奇觀
Agenda
? VCS
? Git
? Git Flow
VCS Version Control System
版本控制系統
為什麼需要版本控制?
為什麼需要版本控制?
? 檔案被別人或自己覆蓋、甚至遺失
為什麼需要版本控制?
? 檔案被別人或自己覆蓋、甚至遺失
? 想復原前幾天寫的版本
為什麼需要版本控制?
? 檔案被別人或自己覆蓋、甚至遺失
? 想復原前幾天寫的版本
? 想知道跟前几天写的差异在哪里
為什麼需要版本控制?
? 檔案被別人或自己覆蓋、甚至遺失
? 想復原前幾天寫的版本
? 想知道跟前几天写的差异在哪里
? 誰改了這行程式碼?為什麼?
為什麼需要版本控制?
? 檔案被別人或自己覆蓋、甚至遺失
? 想復原前幾天寫的版本
? 想知道跟前几天写的差异在哪里
? 誰改了這行程式碼?為什麼?
? 程式上線後,需要分成維護版和開發版
所以我们需要一些机制
所以我们需要一些机制
? 檔案被別人或自己覆蓋、甚至遺失
? 想復原前幾天寫的版本
? 想知道前幾天寫的差在哪裏
? 誰改了這行程式碼?為什麼?
? 程式上線後,需要分成維護版和開發版
所以我们需要一些机制
? 檔案被別人或自己覆蓋、甚至遺失
? 想復原前幾天寫的版本
? 想知道前幾天寫的差在哪裏
? 誰改了這行程式碼?為什麼?
? 程式上線後,需要分成維護版和開發版
所以我们需要一些机制
? 檔案被別人或自己覆蓋、甚至遺失
多人協作,不會把別人的東西蓋掉
? 想復原前幾天寫的版本
? 想知道前幾天寫的差在哪裏
? 誰改了這行程式碼?為什麼?
? 程式上線後,需要分成維護版和開發版
所以我们需要一些机制
? 檔案被別人或自己覆蓋、甚至遺失
多人協作,不會把別人的東西蓋掉
? 想復原前幾天寫的版本
? 想知道前幾天寫的差在哪裏
? 誰改了這行程式碼?為什麼?
? 程式上線後,需要分成維護版和開發版
所以我们需要一些机制
? 檔案被別人或自己覆蓋、甚至遺失
多人協作,不會把別人的東西蓋掉
? 想復原前幾天寫的版本
可以隨時復原修改,回到之前的版本
? 想知道前幾天寫的差在哪裏
? 誰改了這行程式碼?為什麼?
? 程式上線後,需要分成維護版和開發版
所以我们需要一些机制
? 檔案被別人或自己覆蓋、甚至遺失
多人協作,不會把別人的東西蓋掉
? 想復原前幾天寫的版本
可以隨時復原修改,回到之前的版本
? 想知道前幾天寫的差在哪裏
? 誰改了這行程式碼?為什麼?
? 程式上線後,需要分成維護版和開發版
所以我们需要一些机制
? 檔案被別人或自己覆蓋、甚至遺失
多人協作,不會把別人的東西蓋掉
? 想復原前幾天寫的版本
可以隨時復原修改,回到之前的版本
? 想知道前幾天寫的差在哪裏
? 誰改了這行程式碼?為什麼?
保留修改歷史記錄,以供查詢
? 程式上線後,需要分成維護版和開發版
所以我们需要一些机制
? 檔案被別人或自己覆蓋、甚至遺失
多人協作,不會把別人的東西蓋掉
? 想復原前幾天寫的版本
可以隨時復原修改,回到之前的版本
? 想知道前幾天寫的差在哪裏
? 誰改了這行程式碼?為什麼?
保留修改歷史記錄,以供查詢
? 程式上線後,需要分成維護版和開發版
所以 VCS 就誕生了
\\?( 'ω' )??? ////
痴颁厂的歷史
黑暗時代
Local VCS 資料夾管理法
Git & git flow
Git & git flow
Git & git flow
Git & git flow
Git & git flow
Git & git flow
COPY
Git & git flow
Git & git flow
Git & git flow
Git & git flow
Git & git flow
Git & git flow
Git & git flow
Git & git flow
Git & git flow
封建時代
Centralized VCS (Lock Ver.)
Server 大陸
Server 大陸
Server 大陸
Server 大陸
Ceckout
Server 大陸
Lock Request
Server 大陸
Server 大陸
Server 大陸
Commit
Server 大陸
Checkout
Server 大陸
Lock Request
Server 大陸
Server 大陸
Server 大陸
Commit
Server 大陸
Checkout
Server 大陸
Lock Request
Server 大陸
我是过了很久的时间线...
Server 大陸
Server 大陸
Server 大陸
Git & git flow
城堡時代
Centralized VCS (Merge Ver.)
Server 大陸
Server 大陸
Ceckout
Server 大陸
Commit
Server 大陸
Commit
Server 大陸
Merge
Server 大陸
Server 大陸
Server 大陸
Commit
Server 大陸
Conflict
Git & git flow
但是...
Server 大陸
Server 大陸
Server 大陸
Commit
Server 大陸
Server 大陸
Server 大陸
Server 大陸
Git & git flow
Git & git flow
Git & git flow
帝王時代
Distributed VCS
Server 大陸
Server 大陸
Server 大陸
Server 大陸
Clone
Server 大陸
Checkout Checkout
Server 大陸
Server 大陸
Commit
Server 大陸
Server 大陸
Push
Server 大陸
Server 大陸
Server 大陸
Commit
Server 大陸
Server 大陸
Push
Server 大陸
Push
Server 大陸
Pull
Server 大陸
Merge
Server 大陸
Push
Server 大陸
Git & git flow
Commit Commit
Git & git flow
Git
簡介
Git & git flow
Linus Torvalds Linux之父
Linux Kernel
Open Source
Distribute VCS
所有内容都在本地端
开分支成本低
快
省空间
Git & git flow
Git
基本操作
Server 大陸
Server 大陸
Origin / Remote
Server 大陸
Origin / Remote
Repository
Server 大陸
Working Copy
Server 大陸
Server 大陸
$ git clone <URL>
Server 大陸
Git & git flow
$ git checkout <branch>
Git & git flow
Commit
Git & git flow
Staging area
Staging area
Staging area
Staging area
$ git add <file>
Staging area
Staging area
Staging area
$ git commit
Staging area
Staging area
Server 大陸
Server 大陸
$ git push <remote>
Server 大陸
Server 大陸
Git & git flow
Git flow
邁向世界奇觀
Git flow 是什麼?
一套管理開發和版本分支的流程
http://danielkummer.github.io/git-flow-cheatsheet/
两个主要分支
master
永遠處在 Production ready 稳定状态
master
永遠處在 Production ready 稳定状态
develop
最新的下次發佈開發狀態
叁个支援分支
feature
● 開發新功能或修 Bugs
feature
● 開發新功能或修 Bugs
● 從 develop 分支出來
feature
● 開發新功能或修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 develop
feature
● 開發新功能或修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 develop
release
feature
● 開發新功能或修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 develop
release
● 準備要 release 的版本,只修 Bugs
feature
● 開發新功能或修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 develop
release
● 準備要 release 的版本,只修 Bugs
● 從 develop 分支出來
feature
● 開發新功能或修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 develop
release
● 準備要 release 的版本,只修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 master 和 develop
feature
● 開發新功能或修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 develop
release
● 準備要 release 的版本,只修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 master 和 develop
hotfix
feature
● 開發新功能或修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 develop
release
● 準備要 release 的版本,只修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 master 和 develop
hotfix
● 等不及 release 版本,必須馬上修
master 趕上線
feature
● 開發新功能或修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 develop
release
● 準備要 release 的版本,只修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 master 和 develop
hotfix
● 等不及 release 版本,必須馬上修
master 敢上線
● 從 master 分支出來
feature
● 開發新功能或修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 develop
release
● 準備要 release 的版本,只修 Bugs
● 從 develop 分支出來
● 完成後 merge 回 master 和 develop
hotfix
● 等不及 release 版本,必須馬上修
master 敢上線
● 從 master 分支出來
● 完成後 merge 回 master 和 develop
Git flow 如何運作?
第一個 commit 節點
master
第一個 commit 節點
$ git flow init
master
master
develop
master
develop
$ git flow feature start XXX
feature
develop
develop
feature
develop
feature
$ git flow feature start YYY
Git & git flow
Git & git flow
$ git flow feature finish XXX
develop
develop
$ git flow feature finish YYY
develop
Release
develop
develop
$ git flow release start v1.0.0
develop
release 支線 (v1.0.0)
release v1.0.0
release v1.0.0
release v1.0.0
$ git flow release finish v1.0.0
Git & git flow
v1.0.0
tag
v1.0.0
Hotfix
master
master
$ git flow hotfix start v1.0.1
master
hotfix 支線 (v1.0.1)
v1.0.0
hotfix v1.0.1
v1.0.0
hotfix v1.0.1
v1.0.0
hotfix v1.0.1
$ git flow hotfix finish v1.0.1
v1.0.0
develop
v1.0.0
developv1.0.1
v1.0.0
develop
v1.0.1
master
master
master
develop
master
develop
master
develop
feature
feature
master
develop
feature
feature
master
develop
feature
master
develop
feature
master
develop
master
develop
master
develop
release v1.0.1
master
develop
release v1.0.1
master
develop
release v1.0.1
master
develop
v1.0.0
master
develop
v1.0.0
hotfix v1.0.1
master
develop
v1.0.0
hotfix v1.0.1
master
develop
v1.0.0
master
develop
v1.0.0 v1.0.1
master
develop
v1.0.0 v1.0.1
master
feature
v1.1.0
Policy
Developer
Developer
● 一般開發者只開 feature branch,完成後發 pull
request 做 code review
Developer
Developer
Leader
● 一般開發者只開 feature branch,完成後發 pull
request 做 code review
● 只有 Project Leader 可以 commit & merge 進 develop
branch
Developer
Developer
Leader
● 一般開發者只開 feature branch,完成後發 pull
request 做 code review
● 只有 Project Leader 可以 commit & merge 進 develop
branch
● 只有 Production Team 可以管理 master branch
Production Team
Developer
Developer
Leader
Production Team
● 一般開發者只開 feature branch,完成後發 pull
request 做 code review
● 只有 Project Leader 可以 commit & merge 進 develop
branch
● 只有 Production Team 可以管理 master branch
终わり
Git & git flow

More Related Content

What's hot (20)

PDF
Git 經驗分享
Mu Chun Wang
?
PDF
寫給大家的 Git 教學
littlebtc
?
PDF
Git與source tree 基礎教學
Duncan Chen
?
PDF
Git tutorial for windows user (給 Windows user 的 Git 教學)
Cloud Tu
?
PDF
Introduction to git
Bo-Yi Wu
?
PDF
Xcode 的 git 版本管理
彼得潘 Pan
?
PPTX
工程師必備第一工具 - Git
Alan Tsai
?
PPTX
Visual Studio 2015 與 Git 開發實戰
Will Huang
?
PPTX
Gitlab
Tom Chen
?
PPTX
骋颈迟基础介绍
Max Ma
?
PDF
如何與 Git 優雅地在樹上唱歌
Mu Chun Wang
?
PPTX
電子內容管理 使用Git 與 github 1
Alan Tsai
?
PDF
Use Git-flow Manage Your Git Workflow
Liangjun Jiang
?
PDF
Git in a nutshell
Nelson Tai
?
PDF
版本控制 使用Git & git hub
維佋 唐
?
PDF
Git 入门实战
icy leaf
?
PPT
Git share
mactanxin
?
PDF
Git Tutorial 教學
Wen-Tien Chang
?
PDF
Git and Github basic with SourceTree
Chu-Siang Lai
?
PPTX
Git 入門與實作
奕浦 郭
?
Git 經驗分享
Mu Chun Wang
?
寫給大家的 Git 教學
littlebtc
?
Git與source tree 基礎教學
Duncan Chen
?
Git tutorial for windows user (給 Windows user 的 Git 教學)
Cloud Tu
?
Introduction to git
Bo-Yi Wu
?
Xcode 的 git 版本管理
彼得潘 Pan
?
工程師必備第一工具 - Git
Alan Tsai
?
Visual Studio 2015 與 Git 開發實戰
Will Huang
?
Gitlab
Tom Chen
?
骋颈迟基础介绍
Max Ma
?
如何與 Git 優雅地在樹上唱歌
Mu Chun Wang
?
電子內容管理 使用Git 與 github 1
Alan Tsai
?
Use Git-flow Manage Your Git Workflow
Liangjun Jiang
?
Git in a nutshell
Nelson Tai
?
版本控制 使用Git & git hub
維佋 唐
?
Git 入门实战
icy leaf
?
Git share
mactanxin
?
Git Tutorial 教學
Wen-Tien Chang
?
Git and Github basic with SourceTree
Chu-Siang Lai
?
Git 入門與實作
奕浦 郭
?

Viewers also liked (8)

ODP
Get Familiar With Git
Nigam Goyal
?
PDF
Introduction to Ruby
Ranjith Siji
?
PPT
Git training
adm_exoplatform
?
PPT
Ruby Basics
SHC
?
KEY
Git branching-model
Aaron Huang
?
PDF
Getting Git Right
Sven Peters
?
PDF
Git Branching Model
Lemi Orhan Ergin
?
Get Familiar With Git
Nigam Goyal
?
Introduction to Ruby
Ranjith Siji
?
Git training
adm_exoplatform
?
Ruby Basics
SHC
?
Git branching-model
Aaron Huang
?
Getting Git Right
Sven Peters
?
Git Branching Model
Lemi Orhan Ergin
?
Ad

Similar to Git & git flow (20)

PDF
Git 版本控制系統 -- 從微觀到宏觀
Wen-Tien Chang
?
PDF
Learning to Use Git | WeiYuan
Wei-Yuan Chang
?
PPTX
Git Flow 管理
Pu Lee
?
PDF
Intro to Git 投影片
Tony Yeh
?
ODP
Git 教學
Ming-Sian Lin
?
PDF
Git Flow基礎操作與觀念介紹
Ying-Chun Cheng
?
PPTX
骋滨罢实务操作与理论
鵬 大
?
PPTX
Git introduction
mythnc
?
PDF
Git Tutorial
Drake Huang
?
ODP
Git 程式碼版本控制軟體介紹
PingLun Liao
?
PPT
骋颈迟简报
Ted Liang
?
PPT
Git 超簡單學習懶人包(軟體程式版本控管系統)
flylon
?
PDF
Git tutorial
Chin-Yu Ku
?
PDF
Yet another introduction to Git - from the bottom up
Wen-Tien Chang
?
ODP
Git basis - usage
Eason Cao
?
PPTX
Git &amp; git hub v1.2
Chris Chen
?
PDF
初心者 Git 上手攻略
Lucien Lee
?
PDF
Git 簡介(古時候的簡報備份)
Hsin-lin Cheng
?
PDF
淡江骋颈迟与骋颈迟贬耻产操作介绍
Taien Wang
?
PPTX
骋颈迟入门介绍
mudream4869
?
Git 版本控制系統 -- 從微觀到宏觀
Wen-Tien Chang
?
Learning to Use Git | WeiYuan
Wei-Yuan Chang
?
Git Flow 管理
Pu Lee
?
Intro to Git 投影片
Tony Yeh
?
Git 教學
Ming-Sian Lin
?
Git Flow基礎操作與觀念介紹
Ying-Chun Cheng
?
骋滨罢实务操作与理论
鵬 大
?
Git introduction
mythnc
?
Git Tutorial
Drake Huang
?
Git 程式碼版本控制軟體介紹
PingLun Liao
?
骋颈迟简报
Ted Liang
?
Git 超簡單學習懶人包(軟體程式版本控管系統)
flylon
?
Git tutorial
Chin-Yu Ku
?
Yet another introduction to Git - from the bottom up
Wen-Tien Chang
?
Git basis - usage
Eason Cao
?
Git &amp; git hub v1.2
Chris Chen
?
初心者 Git 上手攻略
Lucien Lee
?
Git 簡介(古時候的簡報備份)
Hsin-lin Cheng
?
淡江骋颈迟与骋颈迟贬耻产操作介绍
Taien Wang
?
骋颈迟入门介绍
mudream4869
?
Ad

More from Amo Wu (7)

PPT
Microsoft XNA Game Studio 2D 連線動作遊戲
Amo Wu
?
PDF
物件导向程式设计实习成果报告
Amo Wu
?
PDF
实务专题竞赛报告
Amo Wu
?
PPTX
JavaScript 開發實務分享
Amo Wu
?
PPTX
Productivity tool
Amo Wu
?
PPTX
GuMorning 開發分享
Amo Wu
?
PPTX
Trello
Amo Wu
?
Microsoft XNA Game Studio 2D 連線動作遊戲
Amo Wu
?
物件导向程式设计实习成果报告
Amo Wu
?
实务专题竞赛报告
Amo Wu
?
JavaScript 開發實務分享
Amo Wu
?
Productivity tool
Amo Wu
?
GuMorning 開發分享
Amo Wu
?
Trello
Amo Wu
?

Git & git flow

Editor's Notes

  • #2: 将版本分支管理好,让开发与出版本顺利。
  • #4: 这裡贴一张坂本龙马的图?:笔
  • #5: 档案会遗失、档案会被别人覆盖、想復原之前某版本、想知道版本差异、谁改了什麼?為什麼?、程式上线需要分维护版和开发版。
  • #20: 搁别辫辞蝉颈迟辞谤测保存程式码,肠辞尘尘颈迟测、肠丑别肠办辞耻迟方便散佈程式码给团队,濒辞驳记录谁改变什麼、什麼时候、為什麼,产谤补苍肠丑可因情境分开开发,迟补驳重要里程碑、方便参照。
  • #22: 易衝突、无法协同作业
  • #39: Lock Unlock 不方便
  • #61: 颁痴厂、厂痴狈,每个动作都需要网路连线、单点故障麻烦。
  • #71: 城堡图
  • #83: 骋颈迟、惭别谤肠耻谤颈补濒,可以盖世界奇观了。
  • #111: 与颁痴厂、厂耻产惫别谤蝉颈辞苍一类的集中式版本控制工具不同,它採用了分布式版本库的作法,不需要伺服器端软体,就可以运作版本控制,使得原始码的释出和交流极其方便。
  • #118: git clone <URL>; git init, git remote add origin <URL>
  • #119: git clone <URL>; git init, git remote add origin <URL>
  • #120: git clone <URL>; git init, git remote add origin <URL>
  • #121: git clone <URL>; git init, git remote add origin <URL>
  • #122: git clone <URL>; git init, git remote add origin <URL>
  • #123: git clone <URL>; git init, git remote add origin <URL>
  • #124: git clone <URL>; git init, git remote add origin <URL>
  • #128: - touch README; git add README; git status; git commit -m ‘Add REAMD’; - working copy/staging area/repository - working tree 亂,包含了想 commit 和不相關的東西,staging area 讓你只放想 commit 的檔案或修改。 - 適當粒度/相關性/獨立性; commit msg,第一行摘要,第二行詳細。
  • #139: git clone <URL>; git init, git remote add origin <URL>
  • #140: git clone <URL>; git init, git remote add origin <URL>
  • #141: git clone <URL>; git init, git remote add origin <URL>
  • #142: git clone <URL>; git init, git remote add origin <URL>
  • #146: master develop
  • #149: Feature/Release/Hotfix