天天看點

Git Flow 在團隊中的最佳實踐 -- SourceTree的使用

Git的優點

Git的優點很多,但是這裡隻列出我認為非常突出的幾點。

由于是分布式,所有本地庫包含了遠端庫的所有内容。

優秀的分支模型,打分支以及合并分支,機器友善。

快速,在這個時間就是金錢的時代,Git由于代碼都在本地,打分支和合并分支機器快速,使用個SVN的能深刻體會到這種優勢。

感興趣的,可以去看一下Git本身的設計,内在的架構展現了很多的優勢,不愧是出資天才程式員Linus (Linux之父) 之手

版本管理的挑戰

雖然有這麼優秀的版本管理工具,但是我們面對版本管理的時候,依然有非常大得挑戰,我們都知道大家工作在同一個倉庫上,那麼彼此的代碼協作必然帶來很多問題和挑戰,如下:

如何開始一個Feature的開發,而不影響别的Feature?

由于很容易建立新分支,分支多了如何管理,時間久了,如何知道每個分支是幹什麼的?

哪些分支已經合并回了主幹?

如何進行Release的管理?開始一個Release的時候如何當機Feature, 如何在Prepare Release的時候,開發人員可以繼續開發新的功能?

線上代碼出Bug了,如何快速修複?而且修複的代碼要包含到開發人員的分支以及下一個Release?

大部分開發人員現在使用Git就隻是用三個甚至兩個分支,一個是Master, 一個是Develop, 還有一個是基于Develop打得各種分支。這個在小項目規模的時候還勉強可以支撐,因為很多人做項目就隻有一個Release, 但是人員一多,而且項目周期一長就會出現各種問題。

Git Flow

就像代碼需要代碼規範一樣,代碼管理同樣需要一個清晰的流程和規範

Vincent Driessen 同學為了解決這個問題提出了 A Successful Git Branching Model

下面是Git Flow的流程圖

Git Flow 在團隊中的最佳實踐 -- SourceTree的使用

上面的圖你了解不了? 沒關系,這不是你的錯,我覺得這張圖本身有點問題,這張圖應該左轉90度,大家應該就很用以了解了。

Git Flow常用的分支

Production 分支

也就是我們經常使用的Master分支,這個分支最近釋出到生産環境的代碼,最近釋出的Release, 這個分支隻能從其他分支合并,不能在這個分支直接修改

Develop 分支

這個分支是我們是我們的主開發分支,包含所有要釋出到下一個Release的代碼,這個主要合并與其他分支,比如Feature分支

Feature 分支

這個分支主要是用來開發一個新的功能,一旦開發完成,我們合并回Develop分支進入下一個Release

Release分支

當你需要一個釋出一個新Release的時候,我們基于Develop分支建立一個Release分支,完成Release後,我們合并到Master和Develop分支

Hotfix分支

當我們在Production發現新的Bug時候,我們需要建立一個Hotfix, 完成Hotfix後,我們合并回Master和Develop分支,是以Hotfix的改動會進入下一個Release

Git Flow如何工作

初始分支

所有在Master分支上的Commit應該Tag

Git Flow 在團隊中的最佳實踐 -- SourceTree的使用

Feature 分支

分支名 feature/*

Feature分支做完後,必須合并回Develop分支, 合并完分支後一般會删點這個Feature分支,但是我們也可以保留

Git Flow 在團隊中的最佳實踐 -- SourceTree的使用

Release分支

分支名 release/*

Release分支基于Develop分支建立,打完Release分之後,我們可以在這個Release分支上測試,修改Bug等。同時,其它開發人員可以基于開發新的Feature (記住:一旦打了Release分支之後不要從Develop分支上合并新的改動到Release分支)

釋出Release分支時,合并Release到Master和Develop, 同時在Master分支上打個Tag記住Release版本号,然後可以删除Release分支了。

Git Flow 在團隊中的最佳實踐 -- SourceTree的使用

維護分支 Hotfix

分支名 hotfix/*

hotfix分支基于Master分支建立,開發完後需要合并回Master和Develop分支,同時在Master上打一個tag

Git Flow 在團隊中的最佳實踐 -- SourceTree的使用

Git用戶端-SourceTree的使用

一、SourceTree簡介

SourceTree 是 Windows 和Mac OS X 下免費的 Git 和 Hg 用戶端,擁有可視化界面,容易上手操作。同時它也是Mercurial和Subversion版本控制系統工具。支援建立、送出、clone、push、pull 和merge等操作。

這裡隻對SourceTree做一下大體講解。

安裝

sourceTree是免費的,安裝檔案請自行上網搜尋

運作sourceTree

Git Flow 在團隊中的最佳實踐 -- SourceTree的使用

主要功能介紹:

克隆/建立:建立一個新倉庫,或者從伺服器克隆,或者加載本地已經有的

送出:git指令的commit,上傳到本地倉庫

檢出:checkout,其實就是切換,切換不同分支,切換一個分支的不同版本

丢棄:回到最近一次add或者commit的狀态。

暫存:git stash,手頭工作沒有完成的時候,儲存一下現場

添加:add,把工作區的修改添加到暫緩區

擷取和拉取:git fetch和git pull,擷取是從遠端擷取最新版本到本地,但是不會自動合并,而拉取是會自動合并。fetch更安全一些,可以檢視更新情況,然後決定是否合并。

推送:push,本地資料庫的更新上傳到遠端。

分支:建立或者删除分支。

合并:分支的合并

标簽:給每個版本定義個标簽

Git工作流:一般master是總的主枝,每個人開發的時候都自己定義一個dev分支是自己的主枝,當沒有問題的時候送出到master,然後每個人自己開發新功能的時候建立一個feature功能分支,修改BUG時要單獨拿出一個BUG分支。

指令行模式:可以輸入git指令

歡迎轉載,請注明來源:一路部落格,位址:http://www.16boke.com/article/detail/145