茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1671791 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_0235.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2014/11/11 10:13:36
今天Bear實驗室的主題不是要介紹程式,而是來好好介紹一下有關管理進度開發的工具! 
那今天實驗室的主題是..... Git Flow!!!!  
使用 git 的開發者都知道 git 有 branch 這個功能,但要如何運用在開發流程呢?
(以下內容將以Source Tree講解, 不知道Source Tree是什麼的請點此連結)

什麼是 git flow?

有關Git flow呢,現在 網路上有人整理出了一套模型流程: A successful Git branching model
 
附上簡體翻譯版: 一个成功的Git分支模型
一個Git flow,其中的內容大致可以區分如下:

主要分支
* master:釋出的版本,只從 release 與 hotfix merge  回來,不直接在上面 commit 變更。
* develop:開發中的版本,預設在這 branch 上,開發修改功能都從這分支出去。

支援性分支
* feature branches:從 develop 分支出來,當功能開發修改完成後 merge 回 develop
* release branches:從 develop 分支出來,是準備釋出的版本,只修改版本號與 bug,完成後 merge 回 develop 與 master,並在 master 標上版本號的 tag
* hotfix branches:從 master 分支出來,主要是處理已釋出版本需要立即修改的錯誤,完成後 merge 回 develop 與 master,並在 master 標上版本號的 tag

在本篇教學中,採用 
SourceTree 這套 git gui 工具,因為它有整合了git flow的功能,很方便。
如果你超愛指令,但又不想打太多,你可以參考 Git-flow 使用笔记安裝git-flow工具操作。

本篇教學範例將以圖說的方式,列出以下步驟,並在部分步驟中列出相對應的指令以供參考:
* 初始化專案的 git flow 設定
* 開發新功能(feature)
* 釋出專案(release)
* 緊急上版(hotfix)



以下教學需要使用到SourceTree,關於SourceTree官方網站請點以下連結
SourceTree下載連結 (Mac, Windows皆適用)

初始化專案的 git flow 設定

图片
執行 SourceTree 點擊 Add Repository。
图片
因為我們是建立一個新的空目錄,所以切換到 Create Repository頁面,輸入資訊後點擊 Create。
图片
雙擊剛剛建立的 Repository。
图片
因為整個專案都是空的,所以我們需要 commit 一次,以建立 master branch。
图片
先在專案目錄下新增一個文字檔。

图片
在 Working Copy頁面中,選取剛剛放進專案目錄中的文字檔,點擊 Add。
图片
檔案就會從下方移到上方,準備 commit。接著點擊 Commit。
图片
輸入 Commit message 後,點擊 Commit。
图片
Commit 之後就可以看到 BRANCHES 下多出了 master。接下來就可以點擊 Git Flow 為專案初始化 git flow設定。

图片
基本上不用再調什麼設定,直接點擊 OK。
參考指令:
图片
完成後就會看到在 BRANCHES 下出現 develop 了,這樣就完成了 git flow 的初始化。

開發新功能(feature)

图片
點擊 Git flow 開啟選單。

图片
點擊 Start a New Feature。
图片
輸入Feature Name,然後點擊 OK,建立新的 branch 用來開發新功能。
參考指令:
图片
在 BRANCHES 下可以看到新增了 feature/f1 這個 branch,我們在這 branch 上開發新功能。

图片
在專案目錄下新增一檔案,用來代表新功能,接下來就是老樣子的 commmit 動作。
這邊我們隨意建了一個新檔案叫做main.c!
图片
在 Working Copy頁面中,選取剛剛放進專案目錄中的檔案,點擊 Add。
图片
檔案就會從下方移到上方,準備 commit。接著點擊 Commit。
图片
輸入 Commit message 後,點擊 Commit。

图片
回到 BRANCHES,因為新功能完成了,所以我們要將 feature/f1 merge 回 develop。點擊 Git Flow 叫出選單。
图片
因為目前我們在 feature/f1 上,所以點擊 Finish Current就可以了。
图片
這邊直接點擊 OK。
參考指令:

图片
回到只有 develop 與 master 兩個 branch 的狀態了。重複以上動作直到功能開發完成,就要進行下一個步驟,釋出專案給使用者。

釋出專案(release)

當功能都開發完成之後,就可以進行準備釋出專案,在這 release branch 上做的動作主要就是修改版本號之類的釋出設定。
釋出專案的話,就代表你開發完成了要出去給測試或是準備上架囉!!
图片
點擊 Git Flow。
图片
點擊 Start a New Release。
图片
輸入版本號,點擊 OK(預設是從 develop 最新的版本分支)。
參考指令:
图片
在 BRANCHES 下可以看到出現了 release/v0.1.0 的 branch。
图片
現在讓我們修改一下專案目錄下的 README.md 的內容,加上版本號資訊後存檔。
(畫面中使用的是  Mou Markdown 編輯器, 在Mac上編輯README相當好用, 有機會Bear再詳加介紹

图片
接下來 commit 剛剛的變更,一樣切換到 Working Copy 頁面,選取變更的檔案,點擊 Add。
图片
點擊 Commit。
图片
輸入 Commit message 後點擊 Commit。
图片
回到 BRANCHES 頁面,可以看到 Graph 有變動了。接下來請點擊 Git Flow。

图片
因為目前我們正在 release/v0.1.0 branch,所以直接點擊 Finish Current。
图片
點擊 OK。請注意在 Git Flow 流程中,release branch 只負責釋出設定與修正 bug,千萬不要在上面開發新功能。
參考指令:
图片
Graph 就會出現了變更,release/v0.1.0 會 merge 到 master 跟 develop。並在 master 上標上 v0.1.0 的 tag。

經由以上步驟,我們就學會了依照 Git Flow 從開發到釋出的流程。

緊急上版(hotfix)

當專案釋出之後,可能才發現有重大的錯誤,
但一時之間新功能也正在開發,無法及時釋出新版本.....
這時候可以從  master 分支出 hotfix branch 做緊急上版。
图片
假設目前專案正在進行新功能的開發,如上圖所示,但突然發現版本v0.1.0有錯誤需要馬上修改。請點擊 Git Flow。
图片
因為目前我們在正 feature/f2 branch上,所以我們點擊 Other Action…開啟選單。
图片
點擊 Start Hotfix。

图片
輸入版本號,因為目前我們要修正的版本是v0.1.0,所以按照慣例這裡輸入v0.1.1。點擊 OK。
參考指令:
图片
可以看到 Graph 發生了變動,hotfix/v0.1.1是從 master 分支出來的,接下來就可以修正錯誤,這邊就不再重複講述 commmit 的步驟。
图片
錯誤已經修復好也 commit 了,接下來就是釋出更新的版本。請點擊 Git Flow。

图片
因為目前我們就在 hotfix/v0.1.1上,所以直接點擊 Finish Current。
图片
點擊 OK。
參考指令:
图片
可以在 Graph 中看到了變更,hotfix/v0.1.1 會 merge 到 master 跟 develop。並在 master 上標上 v0.1.1 的 tag。之後再切換到 feature/f2 繼續開發新功能。
參考網站:
A successful Git branching model
Git flow 開發流程
Git-flow 使用笔记

Git 版本控制 branch model 分支模組基本介紹

原文出處: Bear 實驗室: 什麼是Git flow ? 如何在SourceTree使用Git flow管理開發! - TakoBear
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|