Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Git & git flow

953 views

Published on

What is Git flow?

Published in: Technology
  • Hi! Get Your Professional Job-Winning Resume Here! 👉 http://bit.ly/rexumtop
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • @Posen Chen 已修正,感謝告知 :D
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • 有些圖好像走鐘了: page 193, 201~212, 214~217
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • typo: page 157, master敢(趕?)上線
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Git & git flow

  1. 1. Git & Git flow 從小木屋到世界奇觀
  2. 2. Agenda • VCS • Git • Git Flow
  3. 3. VCS Version Control System 版本控制系統
  4. 4. 為什麼需要版本控制?
  5. 5. 為什麼需要版本控制? • 檔案被別人或自己覆蓋、甚至遺失
  6. 6. 為什麼需要版本控制? • 檔案被別人或自己覆蓋、甚至遺失 • 想復原前幾天寫的版本
  7. 7. 為什麼需要版本控制? • 檔案被別人或自己覆蓋、甚至遺失 • 想復原前幾天寫的版本 • 想知道跟前幾天寫的差異在哪裏
  8. 8. 為什麼需要版本控制? • 檔案被別人或自己覆蓋、甚至遺失 • 想復原前幾天寫的版本 • 想知道跟前幾天寫的差異在哪裏 • 誰改了這行程式碼?為什麼?
  9. 9. 為什麼需要版本控制? • 檔案被別人或自己覆蓋、甚至遺失 • 想復原前幾天寫的版本 • 想知道跟前幾天寫的差異在哪裏 • 誰改了這行程式碼?為什麼? • 程式上線後,需要分成維護版和開發版
  10. 10. 所以我們需要一些機制
  11. 11. 所以我們需要一些機制 • 檔案被別人或自己覆蓋、甚至遺失 • 想復原前幾天寫的版本 • 想知道前幾天寫的差在哪裏 • 誰改了這行程式碼?為什麼? • 程式上線後,需要分成維護版和開發版
  12. 12. 所以我們需要一些機制 • 檔案被別人或自己覆蓋、甚至遺失 • 想復原前幾天寫的版本 • 想知道前幾天寫的差在哪裏 • 誰改了這行程式碼?為什麼? • 程式上線後,需要分成維護版和開發版
  13. 13. 所以我們需要一些機制 • 檔案被別人或自己覆蓋、甚至遺失 多人協作,不會把別人的東西蓋掉 • 想復原前幾天寫的版本 • 想知道前幾天寫的差在哪裏 • 誰改了這行程式碼?為什麼? • 程式上線後,需要分成維護版和開發版
  14. 14. 所以我們需要一些機制 • 檔案被別人或自己覆蓋、甚至遺失 多人協作,不會把別人的東西蓋掉 • 想復原前幾天寫的版本 • 想知道前幾天寫的差在哪裏 • 誰改了這行程式碼?為什麼? • 程式上線後,需要分成維護版和開發版
  15. 15. 所以我們需要一些機制 • 檔案被別人或自己覆蓋、甚至遺失 多人協作,不會把別人的東西蓋掉 • 想復原前幾天寫的版本 可以隨時復原修改,回到之前的版本 • 想知道前幾天寫的差在哪裏 • 誰改了這行程式碼?為什麼? • 程式上線後,需要分成維護版和開發版
  16. 16. 所以我們需要一些機制 • 檔案被別人或自己覆蓋、甚至遺失 多人協作,不會把別人的東西蓋掉 • 想復原前幾天寫的版本 可以隨時復原修改,回到之前的版本 • 想知道前幾天寫的差在哪裏 • 誰改了這行程式碼?為什麼? • 程式上線後,需要分成維護版和開發版
  17. 17. 所以我們需要一些機制 • 檔案被別人或自己覆蓋、甚至遺失 多人協作,不會把別人的東西蓋掉 • 想復原前幾天寫的版本 可以隨時復原修改,回到之前的版本 • 想知道前幾天寫的差在哪裏 • 誰改了這行程式碼?為什麼? 保留修改歷史記錄,以供查詢 • 程式上線後,需要分成維護版和開發版
  18. 18. 所以我們需要一些機制 • 檔案被別人或自己覆蓋、甚至遺失 多人協作,不會把別人的東西蓋掉 • 想復原前幾天寫的版本 可以隨時復原修改,回到之前的版本 • 想知道前幾天寫的差在哪裏 • 誰改了這行程式碼?為什麼? 保留修改歷史記錄,以供查詢 • 程式上線後,需要分成維護版和開發版
  19. 19. 所以 VCS 就誕生了 \\٩( 'ω' )‫و‬ ////
  20. 20. VCS的歷史
  21. 21. 黑暗時代 Local VCS 資料夾管理法
  22. 22. COPY
  23. 23. 封建時代 Centralized VCS (Lock Ver.)
  24. 24. Server 大陸
  25. 25. Server 大陸
  26. 26. Server 大陸
  27. 27. Server 大陸 Ceckout
  28. 28. Server 大陸 Lock Request
  29. 29. Server 大陸
  30. 30. Server 大陸
  31. 31. Server 大陸 Commit
  32. 32. Server 大陸 Checkout
  33. 33. Server 大陸 Lock Request
  34. 34. Server 大陸
  35. 35. Server 大陸
  36. 36. Server 大陸 Commit
  37. 37. Server 大陸 Checkout
  38. 38. Server 大陸 Lock Request
  39. 39. Server 大陸
  40. 40. 我是過了很久的時間線...
  41. 41. Server 大陸
  42. 42. Server 大陸
  43. 43. Server 大陸
  44. 44. 城堡時代 Centralized VCS (Merge Ver.)
  45. 45. Server 大陸
  46. 46. Server 大陸 Ceckout
  47. 47. Server 大陸 Commit
  48. 48. Server 大陸 Commit
  49. 49. Server 大陸 Merge
  50. 50. Server 大陸
  51. 51. Server 大陸
  52. 52. Server 大陸 Commit
  53. 53. Server 大陸 Conflict
  54. 54. 但是...
  55. 55. Server 大陸
  56. 56. Server 大陸
  57. 57. Server 大陸 Commit
  58. 58. Server 大陸
  59. 59. Server 大陸
  60. 60. Server 大陸
  61. 61. Server 大陸
  62. 62. 帝王時代 Distributed VCS
  63. 63. Server 大陸
  64. 64. Server 大陸
  65. 65. Server 大陸
  66. 66. Server 大陸 Clone
  67. 67. Server 大陸 Checkout Checkout
  68. 68. Server 大陸
  69. 69. Server 大陸 Commit
  70. 70. Server 大陸
  71. 71. Server 大陸 Push
  72. 72. Server 大陸
  73. 73. Server 大陸
  74. 74. Server 大陸 Commit
  75. 75. Server 大陸
  76. 76. Server 大陸 Push
  77. 77. Server 大陸 Push
  78. 78. Server 大陸 Pull
  79. 79. Server 大陸 Merge
  80. 80. Server 大陸 Push
  81. 81. Server 大陸
  82. 82. Commit Commit
  83. 83. Git 簡介
  84. 84. Linus Torvalds Linux之父
  85. 85. Linux Kernel
  86. 86. Open Source
  87. 87. Distribute VCS
  88. 88. 所有內容都在本地端
  89. 89. 開分支成本低
  90. 90.
  91. 91. 省空間
  92. 92. Git 基本操作
  93. 93. Server 大陸
  94. 94. Server 大陸 Origin / Remote
  95. 95. Server 大陸 Origin / Remote Repository
  96. 96. Server 大陸 Working Copy
  97. 97. Server 大陸
  98. 98. Server 大陸 $ git clone <URL>
  99. 99. Server 大陸
  100. 100. $ git checkout <branch>
  101. 101. Commit
  102. 102. Staging area
  103. 103. Staging area
  104. 104. Staging area
  105. 105. Staging area $ git add <file>
  106. 106. Staging area
  107. 107. Staging area
  108. 108. Staging area $ git commit
  109. 109. Staging area
  110. 110. Staging area
  111. 111. Server 大陸
  112. 112. Server 大陸 $ git push <remote>
  113. 113. Server 大陸
  114. 114. Server 大陸
  115. 115. Git flow 邁向世界奇觀
  116. 116. Git flow 是什麼? 一套管理開發和版本分支的流程 http://danielkummer.github.io/git-flow-cheatsheet/
  117. 117. 兩個主要分支
  118. 118. master 永遠處在 Production ready 穩定狀態
  119. 119. master 永遠處在 Production ready 穩定狀態 develop 最新的下次發佈開發狀態
  120. 120. 三個支援分支
  121. 121. feature ● 開發新功能或修 Bugs
  122. 122. feature ● 開發新功能或修 Bugs ● 從 develop 分支出來
  123. 123. feature ● 開發新功能或修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 develop
  124. 124. feature ● 開發新功能或修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 develop release
  125. 125. feature ● 開發新功能或修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 develop release ● 準備要 release 的版本,只修 Bugs
  126. 126. feature ● 開發新功能或修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 develop release ● 準備要 release 的版本,只修 Bugs ● 從 develop 分支出來
  127. 127. feature ● 開發新功能或修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 develop release ● 準備要 release 的版本,只修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 master 和 develop
  128. 128. feature ● 開發新功能或修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 develop release ● 準備要 release 的版本,只修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 master 和 develop hotfix
  129. 129. feature ● 開發新功能或修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 develop release ● 準備要 release 的版本,只修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 master 和 develop hotfix ● 等不及 release 版本,必須馬上修 master 趕上線
  130. 130. feature ● 開發新功能或修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 develop release ● 準備要 release 的版本,只修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 master 和 develop hotfix ● 等不及 release 版本,必須馬上修 master 敢上線 ● 從 master 分支出來
  131. 131. feature ● 開發新功能或修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 develop release ● 準備要 release 的版本,只修 Bugs ● 從 develop 分支出來 ● 完成後 merge 回 master 和 develop hotfix ● 等不及 release 版本,必須馬上修 master 敢上線 ● 從 master 分支出來 ● 完成後 merge 回 master 和 develop
  132. 132. Git flow 如何運作?
  133. 133. 第一個 commit 節點 master
  134. 134. 第一個 commit 節點 $ git flow init master
  135. 135. master develop
  136. 136. master develop $ git flow feature start XXX
  137. 137. feature develop
  138. 138. develop feature
  139. 139. develop feature $ git flow feature start YYY
  140. 140. $ git flow feature finish XXX
  141. 141. develop
  142. 142. develop $ git flow feature finish YYY
  143. 143. develop
  144. 144. Release
  145. 145. develop
  146. 146. develop $ git flow release start v1.0.0
  147. 147. develop release 支線 (v1.0.0)
  148. 148. release v1.0.0
  149. 149. release v1.0.0
  150. 150. release v1.0.0 $ git flow release finish v1.0.0
  151. 151. v1.0.0 tag
  152. 152. v1.0.0
  153. 153. Hotfix
  154. 154. master
  155. 155. master $ git flow hotfix start v1.0.1
  156. 156. master hotfix 支線 (v1.0.1)
  157. 157. v1.0.0 hotfix v1.0.1
  158. 158. v1.0.0 hotfix v1.0.1
  159. 159. v1.0.0 hotfix v1.0.1 $ git flow hotfix finish v1.0.1
  160. 160. v1.0.0 develop
  161. 161. v1.0.0 developv1.0.1
  162. 162. v1.0.0 develop v1.0.1 master
  163. 163. master
  164. 164. master develop
  165. 165. master develop
  166. 166. master develop feature feature
  167. 167. master develop feature feature
  168. 168. master develop feature
  169. 169. master develop feature
  170. 170. master develop
  171. 171. master develop
  172. 172. master develop release v1.0.1
  173. 173. master develop release v1.0.1
  174. 174. master develop release v1.0.1
  175. 175. master develop
  176. 176. v1.0.0 master develop
  177. 177. v1.0.0 hotfix v1.0.1 master develop
  178. 178. v1.0.0 hotfix v1.0.1 master develop
  179. 179. v1.0.0 master develop
  180. 180. v1.0.0 v1.0.1 master develop
  181. 181. v1.0.0 v1.0.1 master feature v1.1.0
  182. 182. Policy
  183. 183. Developer Developer ● 一般開發者只開 feature branch,完成後發 pull request 做 code review
  184. 184. Developer Developer Leader ● 一般開發者只開 feature branch,完成後發 pull request 做 code review ● 只有 Project Leader 可以 commit & merge 進 develop branch
  185. 185. Developer Developer Leader ● 一般開發者只開 feature branch,完成後發 pull request 做 code review ● 只有 Project Leader 可以 commit & merge 進 develop branch ● 只有 Production Team 可以管理 master branch Production Team
  186. 186. Developer Developer Leader Production Team ● 一般開發者只開 feature branch,完成後發 pull request 做 code review ● 只有 Project Leader 可以 commit & merge 進 develop branch ● 只有 Production Team 可以管理 master branch
  187. 187. 终わり

×