Successfully reported this slideshow.

Git & git flow

14

Share

Upcoming SlideShare
Git flow
Git flow
Loading in …3
×
1 of 219
1 of 219

Git & git flow

14

Share

Download to read offline

Description

What is Git flow?

Transcript

  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. 终わり

Editor's Notes

  • 將版本分支管理好,讓開發與出版本順利。
  • 這裡貼一張坂本龍馬的圖 :P
  • 檔案會遺失、檔案會被別人覆蓋、想復原之前某版本、想知道版本差異、誰改了什麼?為什麼?、程式上線需要分維護版和開發版。
  • Repository保存程式碼,commity、checkout方便散佈程式碼給團隊,log記錄誰改變什麼、什麼時候、為什麼,branch可因情境分開開發,tag重要里程碑、方便參照。
  • 易衝突、無法協同作業
  • Lock Unlock 不方便
  • CVS、SVN,每個動作都需要網路連線、單點故障麻煩。
  • 城堡圖
  • Git、Mercurial,可以蓋世界奇觀了。
  • 與CVS、Subversion一類的集中式版本控制工具不同,它採用了分布式版本庫的作法,不需要伺服器端軟體,就可以運作版本控制,使得原始碼的釋出和交流極其方便。
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • - 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,第一行摘要,第二行詳細。
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • master develop
  • Feature/Release/Hotfix
  • Description

    What is Git flow?

    Transcript

    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. 终わり

    Editor's Notes

  • 將版本分支管理好,讓開發與出版本順利。
  • 這裡貼一張坂本龍馬的圖 :P
  • 檔案會遺失、檔案會被別人覆蓋、想復原之前某版本、想知道版本差異、誰改了什麼?為什麼?、程式上線需要分維護版和開發版。
  • Repository保存程式碼,commity、checkout方便散佈程式碼給團隊,log記錄誰改變什麼、什麼時候、為什麼,branch可因情境分開開發,tag重要里程碑、方便參照。
  • 易衝突、無法協同作業
  • Lock Unlock 不方便
  • CVS、SVN,每個動作都需要網路連線、單點故障麻煩。
  • 城堡圖
  • Git、Mercurial,可以蓋世界奇觀了。
  • 與CVS、Subversion一類的集中式版本控制工具不同,它採用了分布式版本庫的作法,不需要伺服器端軟體,就可以運作版本控制,使得原始碼的釋出和交流極其方便。
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • - 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,第一行摘要,第二行詳細。
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • git clone <URL>; git init, git remote add origin <URL>
  • master develop
  • Feature/Release/Hotfix
  • More Related Content

    Related Books

    Free with a 30 day trial from Scribd

    See all

    ×