1. 程式人生 > >介紹一個成功的 Git 分支模型(A successful Git branching model)

介紹一個成功的 Git 分支模型(A successful Git branching model)

開始一項功能的開發工作時,基於develop建立分支。

?
1 2 $ git checkout -b myfeature develop Switched to a new branch "myfeature"

合併一個功能到develop分支

完成的功能可以合併進develop分支,以明確加入到未來的釋出:

?
1 2 3 4 5 6 7 8 $ git checkout develop
Switched to branch 'develop' $ git merge --no-ff myfeature Updating ea1b82a..05e9557 (Summary of changes) $ git branch -d myfeature Deleted branch myfeature (was 05e9557). $ git push origin develop

--no-ff標誌導致合併操作建立一個新commit物件,即使該合併操作可以fast-forward。這避免了丟失這個功能分支存在的歷史資訊,將該功能的所有提交組合在一起。 比較:

後一種情況,不可能從Git歷史中看到哪些提交一起實現了一個功能——你必須手工閱讀全部的日誌資訊。如果對整個功能進行回退 (比如一組提交),後一種方式會是一種真正頭痛的問題,而使用--no-ffflag的情況則很容易.

是的,它會建立一個新的(空)提交物件,但是收益遠大於開銷。

不幸的是,我還沒找到一種方法,讓--no-ff時作為合併操作的預設選項,但它應該是可行的。

Release 分支

Release分支可能從develop分支分離而來,但是一定要合併到develop和master分支上,它的習慣命名方式為:release-*。

Release分支是為新產品的釋出做準備的。它允許我們在最後時刻做一些細小的修改。他們允許小bugs的修改和準備釋出元資料(版本號,開發時間等等)。當在Release分支完成這些所有工作以後,對於下一次打的釋出,develop分支接收

features會更加明確。

develop分支建立新的Release分支的關鍵時刻是develop分支達到了釋出的理想狀態。至少所有這次要釋出的features必須在這個點及時合併到develop分支。對於所有未來準備釋出的features必須等到Release分支建立以後再合併。

Release分支建立的時候要為即將發行版本分配一個版本號,一點都不早。直到那時,develop分支反映的變化都是為了下一個發行版,但是在Release分支建立之前,下一個發行版到底叫0.3還是1.0是不明確的。這個決定是在Release分支建立時根據專案在版本號上的規則制定的。

建立一個release分支

Release分支是從develop分支建立的。例如,當前產品的發行版本號為1.1.5,同事我們有一個大的版本即將發行。develop 分支已經為下次發行做好了準備,我們得決定下一個版本是1.2(而不是1.1.6或者2.0)。所以我們將Release分支分離出來,給一個能夠反映新版本號的分支名。

?
1 2 3 4 5 6 7 $ git checkout -b release-1.2 develop Switched to a new branch "release-1.2" $ ./bump-version.sh 1.2 Files modified successfully, version bumped to 1.2. $ git commit -a -m "Bumped version number to 1.2" [release-1.2 74d9424] Bumped version number to 1.2 1 files changed, 1 insertions(+), 1 deletions(-)

建立新分支以後,切換到該分支,新增版本號。這裡,bump-version.sh 是一個虛構的shell指令碼,它可以複製一些檔案來反映新的版本(這當然可以手動改變--目的就是修改一些檔案)。然後版本號被提交。

這個新分支可能會存在一段時間,直到該發行版到達它的預定目標。在此期間,bug的修復可能被提交到該分支上(而不是提交到develop分支上)。在這裡嚴格禁止增加大的新features。他們必須合併到develop分支上,然後等待下一次大的發行版。

完成一個release分支

當一個release分支準備好成為一個真正的發行版的時候,有一些工作必須完成。首先,release分支要合併到master上(因為每一次提交到master上的都是一個新定義的發行版,記住)。然後,提交到master上必須打一個標籤,以便以後更加方便的引用這個歷史版本。最後,在release分支上的修改必須合併到develop分支上,以便未來發行版也包含這些bugs的修復。

在Git中的前兩步是:

?
1 2 3 4 5 6

相關推薦

介紹一個成功Git 分支模型A successful Git branching model

開始一項功能的開發工作時,基於develop建立分支。 ? 1 2 $ git checkout -b myfeature develop Switched to a new branch "myfeature"

一個成功Git 分支模型適用於商業應用開發

還原 如果 功能 角度 想要 允許 chang lai ive 在這篇文章中,我將推廣一下大約一年前我介紹過的一些項目(公私皆有)中使用的開發模型,它們的結果都非常成功。有段時間我非常想寫出來分享一下,但是我至今才抽出時間來。我不會言及任何項目細節,僅討論分支策略和發布管

一個diaodiao的Git分支模型

原文出自:http://nvie.com/posts/a-successful-git-branching-model/ 以下是翻譯內容: 在這篇文章裡,將展示我在大約一年前為我的一些專案(包括工作上的和私人的)所提出的開發模型,它最終也被證明是非常成功的。我早就打算寫這樣一篇文章,但

利用theano編寫logistic迴歸模型A Real Example: Logistic Regression

A Real Example: Logistic Regression 程式碼註釋的已經比較詳細,請仔細閱讀! import numpy import theano import theano.tensor as T import matplotlib.pyp

解決VS2012中沒有ado.net實體資料模型ADO.NET entity data model的問題

      我使用的是VS2012旗艦版,但是一直在“新建專案”中找不到“ADO.NET實體資料模型” 這個選項,嘗試了網路上的各種方法,包括安裝entity framework,重置模板,甚至重新安裝vs2012,都沒有解決,後來在一個英文論壇上找到了解決辦法。 上圖可

介紹一個成功Git 分支模型 Release 分支

轉載自:http://www.cnblogs.com/yaks/p/5666400.html 英文原文: http://nvie.com/posts/a-successful-git-branching-model/ 中文版: 在這篇文章中,我

一個成功Git 分支模型

規則 人的 做的 現在 ges 每一個 管理工具 nta nac 在這篇文章中介紹的開發模型在大約一年前已經在我的私有項目和工作引入的,而且已經被證明是非常成功的。我想寫一些關於這個模型的東西已經好一段時間了,但是一直苦於沒有時間,不過現在可以了。我不想探討任何項目細節,只

Git 分支模型與開發規範

work 所有 upload git 分支 -a 最新 push wechat let 01、分支模型 master:長期分支,一般用於管理對外發布版本,每個 commit 對一個 tag,也就是一個發布版本 develop:長期分支,一般用於作為日常開發匯總,

git分支管理建立分支分支間轉換,檢視分支,合併分支,刪除分支分支衝突

分支(branch)這玩意兒我也不知道該怎麼解釋,就按照自己的理解來吧~ 在你第一次commit的時候,git會自動建立一個master分支(當然前提是你沒有在這之前就轉換到另一個分支上),這就是主線。有的時候,會想對倉庫進行某些操作,但是我們又不想影響到倉庫當前的狀態,這個時候就可以建立一

Redis在windows下的安裝啟動解決一個錯誤:Could not get a resource from the pool

由於專案需要,最近在將專案的每個模組改變成一個單獨的服務來進行部署,但是服務寫完之後,在啟動時報了一個錯誤:Could not get a resource from the pool,如下圖所示: 由以上資訊並查閱資料後明白可能是redis沒有啟動,但是公司

Git分支模型(master/hotfix/develop/feature/release)

1.分支管理 1.1 總覽(一張流程圖給大家先鎮鎮驚) 它主要體現了Git對我們原始碼版本的管理。 (轉載者加)一般情況: ● master和develop並行。 ● master上始終是最穩定的程式碼,develop是正在開發的程式碼。 ● feature則是某個開發為了

成熟的 Git 分支模型

個人部落格原文: 成熟的 Git 分支模型 今天介紹一下工作中會用到的 Git 分支模型。 先貼上圖以表敬意 閒言 在學校不管是自己寫課程設計還是給老師做專案,有 2 到 3 個人一起協作開發時就會使用 Git ,但是隻是簡單用了它所提供的程式碼協作功能,

Git 分支模型

翻譯自:https://nvie.com/posts/a-successful-git-branching-model/ 在這篇文章中,主要介紹 Git 分支模型。不會談論任何專案的細節,只討論分支策略和釋出管理。 Git分散式和集中式理解 我們配置了中央儲存庫可以很完美的配合該分支模型工作。這裡需

Spring系列(3/4)----一個較為完善的模型

接上篇: 4、我們知道我們進行動態代理的目的是為了附加責任,也就是在目標類方法執行的時候,我們能增加一些附加的功能。我們前面的模型雖然可以達到這個目的,但通訊資訊不夠。觀察者雖然可以獲取目標類,但無法知道當前執行的方法和引數值,這在有些情況下雖然沒什麼不利,但既然我們的

Spring系列(3/4)----一個較為完善的模型

接上一篇,我們繼續來完善這個模型,我們為附加責任類定義了一個介面,這樣,只要實現這個介面的類都可以註冊,接收代理類的呼叫通知;同時為了更好的互動,我們還定義了一個呼叫引數介面,和一個具體的呼叫引數類,接下來,我們再看看代理類: /// <summary>  

Git-分支衝突筆記

如果若干個分支修改了同一個檔案,那麼,在進行分支合併的時候無法選擇究竟保留哪一個分支,此時,只能手動修改成相同的資訊再進行分支合併。 TIPS: git log --graph --pretty=oneline --abbrev-commit //

詞袋模型BOW,bag of words和詞向量模型Word Embedding概念介紹

例句:Jane wants to go to Shenzhen.Bob  wants to go to Shanghai.一、詞袋模型    將所有詞語裝進一個袋子裡,不考慮其詞法和語序的問題,即每個詞語都是獨立的。例如上面2個例句,就可以構成一個詞袋,袋子裡包括Jane、w

初遇C#:一個簡單的小程序圓形周長,面積計算器

編碼 雙精度 崩潰 輸入 面向對象 窗口 語句 readline 面向對象的語言 作為一個面向對象的語言,與用戶的交互很關鍵! 在此,我們可以先分析一下我們這個小程序要與用戶交互的內容:1.命名很重要,讓用戶看見這個程序就知道這個程序的作用。 2.當用戶打開這個程序時,提示

一個簡單的MapReduce示例多個MapReduce任務處理

.lib exceptio apr private util sum length reat lin 一、需求   有一個列表,只有兩列:id、pro,記錄了id與pro的對應關系,但是在同一個id下,pro有可能是重復的。   現在需要寫一個程序,統計一下每個id下有

利用文件打開方式with open('文件名',方式) as 變量名做一個簡單的復制排除大文件bug

family rwx usr linux 利用 免除 數據 都是 lines 1 #!usr/bin/env python 2 #-*- coding=utf-8 -*- 3 4 with open(‘b.py‘,‘r‘) as obj1, open(‘c.py‘