<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## 團隊Git 分支模型 ![](https://i.loli.net/2019/02/25/5c738a5d906b7.png) 名詞解釋: 1. `severe bug fixed for production hotfix 0.2`:為生產修補程序0.2修復的嚴重錯誤。 2. `incorporate bugfix in develop` 在開發中加入bugfix 3. `major features for next release`:下一版本的主要功能 4. `only bugfixes`:只有錯誤修正. 5. `bugfixes from release branch may be continuously merged back into develop`:發布分支的錯誤修正可能會不斷合并回到開發中 ### 主分支 在核心部分,研發模型很大程度上靠現有模型支撐的。中心庫有2個可一直延續的分支 * master分支 * develop分支 每個Git用戶都要熟悉原始的master分支。與master分支并行的另一個分支,我們稱之為develop分支。 我們把原始庫/master庫認作為主分支,HEAD的源代碼存在于此版本中,并且隨時都是一個*預備**生產*狀態。 ### 輔助性分支 我們的開發模型使用了各種輔助性分支,這些分支與關鍵分支(master和develop)一起,用來支持團隊成員們并行開發,使得易于追蹤功能,協助生產發布環境準備,以及快速修復實時在線問題。與關鍵分支不同,這些分支總是有一個有限的生命期,因為他們最終會被移除。 我們用到的分支類型包括: * 功能分支 * 發布分支 * 熱修復分支 每一種分支有一個特定目的,并且受限于嚴格到規則,比如:可以用哪些分支作為源分支,哪些分支能作為合并目標。我們馬上將進行演練。 從技術角度來看,這些分支絕不是特殊分支。分支的類型基于我們使用的方法來進行分類。它們理所當然是普通的Git分支。 ### 功能分支 可能是develop分支的分支版本,最終必須合并到develop分支中。 分支命名規則:除了`master、develop、release-*、hotfix-*`之外,[其他](http://www.wuseyun.com/htmldata/tag/50/%E5%85%B6%E4%BB%96.html)命名均可。 功能分支(有時被稱為topic分支)通常為即將發布或者未來發布版開發新的功能。當新功能開始研發,包含該功能的發布版本在這個還是[無](http://www.wuseyun.com/htmldata/tag/11/%E6%97%A0.html)法確定發布時間的。功能版本的實質是只要這個功能處于開發狀態它就會存在,但是最終會或合并到develop分支(確定將新功能添加到不久的發布版中)或取消(譬如一次令人失望的測試)。 功能分支通常存在于開發者的軟件庫,而不是在源代碼庫中。 #### 創建一個功能分支 開始一項功能的開發工作時,基于develop創建分支 ``` $ git checkout -b DD_TASKID_381 develop Switched to a new branch 'DD_TASKID_381' ``` > 本地分支最好按照項目需要命名 `DD_TASKID_381`,表示點點項目任務ID = 381 #### 在任務分支開發項目 這里開始編寫代碼(當前分支`DD_TASKID_381`),代碼編寫完后,查看被修改的文件 ``` $ git status On branch DD_TASKID_381 Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: readme.md no changes added to commit (use "git add" and/or "git commit -a") ``` #### 合并一個功能到develop分支 完成的功能可以合并進develop分支,以明確加入到未來的發布。切換到開發分支 `develop` ``` $ git checkout develop Switched to branch 'develop' ``` 合并`DD_TASKID_381`分支到 'develop' ``` $ git merge --no-ff DD_TASKID_381 Merge made by the 'recursive' strategy. readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ``` >` no-ff`標志導致合并操作創建一個新commit對象,即使該合并操作可以`fast-forward`。這避免了丟失這個功能分支存在的歷史信息,將該功能的所有提交組合在一起 (如果功能開發完畢)刪除本地`DD_TASKID_381`分支 ``` $ git branch -d DD_TASKID_381 Deleted branch DD_TASKID_381 (was b674d30). ``` 推送本地`develop`分支遠程到`origin/develop`分支 ``` $ git push origin develop Enumerating objects: 6, done. Counting objects: 100% (6/6), done. Delta compression using up to 4 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 460 bytes | 92.00 KiB/s, done. Total 4 (delta 3), reused 0 (delta 0) To https://git.coding.net/Tinywan/juhepay-dev.git 19ef874..54dee6f develop -> develop ``` ## 實踐步驟 * 開發、測試、正式全部使用docker不是環境 * (新人)每次從 `develop `開發分支拉取最新代碼,創建自己的分支:`git checkout -b tinywan develop `編寫代碼 * 編寫好代碼后切換到 `develop`,在`develop`分支整合已經開發完成的特性 ,開發完成的特性必須合并到develop分支,即添加到即將發布的版本中。 ``` git merge --no-ff tinywan # 推送到遠程開發開發分支 git push origin develop ``` * jenkins開始構建。使用自己的賬戶在[http://jenkins.frp.tinywan.top](http://jenkins.frp.tinywan.top)上使用jenkins工具在任務[測試環境【develop分支】](#) 立即構建。在測試環境可以立即預覽修改的內容 * 告訴測試人員可以測試了 * 開發環境代碼發布到正式環境,主要就Tinywan負責。請在conding上手動[【新建合并請求】](https://coding.net/u/Tinywan/p/juhepay/git/compare)。合并開發分支到master分支上面 * jenkins開始構建。使用自己的賬戶在[http://jenkins.frp.tinywan.top](http://jenkins.frp.tinywan.top)上使用jenkins工具在任務[正式環境【master分支】(危險)】](#) * 正式環境可以進行測試代碼了
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看