(GIT)代码分支管理策略
生活随笔
收集整理的這篇文章主要介紹了
(GIT)代码分支管理策略
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、我們采用的管理策略(分支開發主干發布) 1. 主分支(master),用于發布,每次發布時打一個(tag),不做任何開發使用 拉取源:無 合并目標:無 修改:不允許 生命周期:持續 2. 開發分支(develop),每次有新需求時,從(master)拉取創建一個新分支,測試完成后合并到(master),合并后需要重新測試 拉取源:master 合并目標:master 修改:允許 生命周期:合并后刪除(上線穩定運行后再刪除) 3. 測試/預發布分支(release),開發到某一階段時,創建一個(release)分支提供測試,如果測試期間,對應的開發分支(develop)有修改,則需要同步到(release)分支,或者直接使用開發分支(develop)覆蓋(release)分支 拉取源:develop 合并目標:無 修改:不允許 生命周期:測試完成后刪除 4. 問題修改分支(hotfix),用于修復線上問題,從對應線上版本的(tag)拉取,修改并測試完成后(merge)到(master),在(master)測試完成后,從(master)發布,同時打一個新的(tag) 拉取源:tag 合并目標:master 修改:允許 生命周期:測試完成后刪除(上線穩定運行后再刪除) 二、GIT操作規范 1. 代碼修改前,必須先從對應分支PULL最新代碼 2. 完成代碼編寫后,COMMIT到本地倉庫,建議經常COMMIT到本地倉庫,以防丟失或者被覆蓋 3. PULL最新代碼,如果需要MERGE,原則上不允許覆蓋別人提交的代碼,如果存在沖突的情況,如果不能百分百確定可以覆蓋,需要與相關開發人員共同MERGE 4. PUSH本地代碼到遠程倉庫 5. 代碼開發階段,不建議頻繁PUSH,如果是公共代碼或者被依賴的代碼,完成測試后即可PUSH 6. 對于多人同時開發相同文件,如果存在開發中但是必須提交的情況,可以先REVERT,修改后COMMIT,然后再從LOCAL HISTORY中將被還原的代碼拉取出來 三、兩種主流的管理策略 1. 主干開發分支發布 得到一個穩定版本后,將此穩定版本放到一個新分支上,針對此穩定版本的修修補補就在這個分支上進行,新功能不在此分支上開發,而在主干上進行新功能的開發。 這是業界采用較多的模式。 穩定分支上的有些修改,比如缺陷修復,需要合并到主干, 但有些特定修改,是不需要合并到主干的。這時需要千萬注意,合并準確的文件到主干。 對于不能合并到主干的情況,常見的是再拉一個分支,這個分支專門為少數特定情況而用,但從全局講,可能會導致太多分支,不同分支間混亂,所以這并不推薦。推薦寧愿采用配置開關。 比如freebsd的發布就是一個典型的例子。 freebsd的主干永遠是current,也就是包括所有最新特性的不穩定版本。然后隨著新特性的逐步穩定,達到一個發布的里程碑以后,從主干分出來一個stable分支。freebsd是每個大版本一個分支。也就是說4.x,5.x,6,x各一個分支。每個發布分支上只有bug修改和現有功能的完善,而不會再增加新特性。新特性會繼續在主干上開發。當穩定分支上發生的修改積累到一定程度以后,就會有一次發布。發布的時候會在穩定分支上再分出來一個 release分支。以6.x為例,就會有6.0,6.1,6.2…等發布分支。【此段摘自于網絡 http://thinkernel.bokee.com/4518935.html 】 2. 分支開發主干發布 得到一個穩定版本后,拉出先鋒分支,在分支上開發新功能,在主干上進行修修補補。當先鋒分支通過一定的測試之后,合并到主干。可以同時有多個先鋒分支,不同的功能可以拉不同的分支,不同發布時間點而又要同時開發的內容必須在不同的分支上。 從發布的角度講,更推薦將肯定一起發布的內容放在相同的先鋒分支上。 主干上永遠是穩定版本,可以隨時發布。bug的修改和新功能的增加,全部在分支上進行。而且每個bug和新功能都有不同的開發分支,完全分離。而對主干上的每一次發布都做一個標簽而不是分支。分支上的開發和測試完畢以后才合并到主干。 這種發布方法的好處是每次發布的內容調整起來比較容易。如果某個新功能或者bug在下一次發布之前無法完成,就不可能合并到主干,也就不會影響其他變更的發布。另外,每個分支的生命期比較短,唯一長期存在的就是主干,這樣每次合并的風險很小。每次發布之前,只要比較主干上的最新版本和上一次發布的版本就能夠知道這次發布的文件范圍了。 【此段摘自于網絡 http://thinkernel.bokee.com/4518935.html 】 四、A successful Git branching model 簡單描述: 1.存在一條主分支(master)。所有用戶可見的正式版本,都從master發布。主分支作為穩定的唯一代碼庫,不做任何開發使用。 拉取源:無需。 合并目標:無需。 修改:不允許。 生命期:持續。 2.存在一條開發分支(develop)。這個分支維護了當前開發中代碼的主線,始終保持代碼新于master。持續集成、最新隔夜版本的生成等都是基于這個分支。由于當前版本迭代較快,開發分支只提供拉取,不進行實際開發。 拉取源:master。 合并目標:無需。 修改:不允許。 生命期:持續。 3.臨時性多個功能分支(feature)。從develop拉取。開發feature完成,merge回develop。為了降低對其他feature的影響,一般在提測前merge回develop分支。 拉取源:develop。 合并目標:develop。 修改:允許。 生命期:合并后刪除。 4.臨時性多個預發布(測試)分支(release),用于QA測試。從develop拉取,測試完成merge回master和develop。如果測試期間,有其他版本合并入master,需要同步到release版本,并進行測試。 拉取源:develop。 合并目標:master & develop。 修改:允許。 生命期:合并后刪除。 5. 臨時性多個bug修復分支(fixbug),用于修復線上問題。從master拉取,修復并測試完成merge回master和develop。如果修復期間,有其他版本合并入master ,需要同步到fixbug版本,并進行測試。 拉取源:master。 合并目標:master,develop。 修改:允許。 生命期:合并后刪除。 參考資料: https://nvie.com/posts/a-successful-git-branching-model/ http://www.ituring.com.cn/article/56870 https://www.cnblogs.com/charlesblc/p/6051569.html
轉載于:https://www.cnblogs.com/weijs/p/9950395.html
總結
以上是生活随笔為你收集整理的(GIT)代码分支管理策略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu 配置dns访问外网
- 下一篇: Python爬虫:scrapy 的运行流