日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何新建分支上传_Git分支策略及操作演示1|IDCF FDCC认证学员作品

發布時間:2025/3/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何新建分支上传_Git分支策略及操作演示1|IDCF FDCC认证学员作品 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

徐磊老師在 IDCF FDCC 認證公益訓練營中提出,需求管理、配置管理、版本管理是研發管理的三大基石。而 Git 是當前最棒的版本控制系統,是事實的業界標準??梢娛煜?Git 操作, 設計合適的分支策略對于研發人員非常重要。

目前,已有很多文章介紹 Git 操作,也有很多文章介紹分支策略的選擇。本文以華為云軟件開發平臺DevCloud(https://devcloud.huaweicloud.com/)為例,基于常見的研發場景,介紹分支策略和對應的操作方法,方便開發團隊設計和實施適合自己的分支策略。

其中一些示例參考徐磊老師的課程《IDCF 訓練營 - DevOps 持續交付》,徐磊老師在課程中詳細介紹了分布式配置管理系統 Git 的特點和優勢,以及如何為團隊設計簡單高效的配置管理策略(分支策略),推薦大家學習。

開發庫、受控庫和產品庫

開發庫、受控庫和產品庫的提法可能來源于 CMMI V1.0 (或更早的版本)的一個配置管理系統的例子,然后就成了一些組織的過程資產,沿用至今。

  • 開發庫是開發人員修改代碼的地方,開發人員可以隨意修改;
  • 受控庫是測試版本代碼存放的地方,需要開發組長提交測試申請修改;
  • 產品庫是測試通過版本存放的地方,需要測試報告來驅動修改。

Examples of configuration management systems include the following:

Dynamic (or developer's) systems contain components currently being created or revised. They are in the developer's workspace and are controlled by the developer. Configuration items in a dynamic system are under version control.

Master (or controlled) systems contain current baselines and changes to them. Configuration items in a master system are under full configuration management as described int ths process area.

Static systems contain archives of various baselines released for use. Static systems are under full configuration management as described in this process area.

使用 Git 可以建立 dev, test 和 prod 三個分支分別對應開發庫、測試庫和產品庫,而不需要建 3 個庫 (repo),這樣通過簡單的合并操作就可以實現從開發庫到測試庫、從測試庫到開發庫的代碼復制,而且可以從合并記錄中看出 3 個分支之間的關系。當然,作為分布式配置管理系統,每克隆一個新庫,就相當于新建了一個或一組分支,如果建 3 個庫,可以實現更嚴格的權限控制。

如果通過分支進行權限控制,打開 DevCloud, 進入要管理的代碼倉庫,在分支頁簽下建好所需的分支,然后在設置頁簽的倉庫管理 ? 保護分支管理菜單下,點擊新建保護分支,按照提示進行操作,可以實現只允許管理員向這些分支提交/合并,也就實現了測試庫和產品庫受控。

注意:DevCloud 保護分支管理界面中的合并指的是合并請求的批準權限,與 git-merge 并不是一回事。

保護分制管理

開發庫、受控庫和產品庫看起來可以滿足瀑布式開發的需要,在這種場景下,開發完成再測試,測試完成再進行生產發布,沒有合并時的沖突。實際上,沖突會體現在 dev 分支上。即使是遠端的中心倉庫只有一個 dev 分支,但其實中心倉庫的 dev 分支和開發人員本地倉庫的 dev 分支并不是一回事,即使用的是同一個名字,并且有跟蹤關系。

$ git checkout devSwitched to a new branch 'dev'Branch 'dev' set up to track remote branch 'dev' from 'origin'.

所以只要有團隊中有多位開發人員,就可能出現合并時的沖突,也就需要開發團隊對分支策略達成共識。在開發開始前,以及向中心倉庫推送修改前,及時拉取 dev 分支的最新改動,可以有效減少合并時的沖突。

當然,減少沖突的根本還是應從管理粒度和工程解耦兩方面考慮,這是徐磊老師在《IDCF 訓練營 - DevOps 持續交付》中提出的研發效能提升的核心秘籍。

至于 test 和 prod 兩個受控分支,因為只有被授權的配置管理員才能進行提交/合并操作,不太可能出現沖突,反而管理相對簡單。

如果 test 和 prod 兩個受控分支不允許存在無關的提交記錄,在從 dev 或 test 分支進行合并操作時,可使用 --squash 選項,然后再進行提交操作。當然如果使用 --squash, 從分支圖譜上將看不出兩個分支之間的關系,最好使用標簽功能在這幾個分支上進行標記。而且在下一次使用這種方式進行合并時,雖然當前的 HEAD 指向的文件內容與被合并分支的某個父節點指向的的文件內容完全相同,但兩者卻是不同的提交,所以很可能會出現合并沖突,此時指定合并策略可以避免處理合并沖突的麻煩。

$ git checkout testSwitched to branch 'test'Your branch is up to date with 'origin/test'.$ git merge dev --squash --strategy-option=theirsAuto-merging README.mdAutomatic merge went well; stopped before committing as requestedSquash commit -- not updating HEAD$ git commit -m "test-v2"[test 8d9b6a4] test-v2 1 file changed, 5 insertions(+)$ git log --oneline --graph* 8d9b6a4 (HEAD -> test) test-v2* 0e9357a test-v1* d226468 init$ git push...Writing objects: 100% (3/3), 285 bytes | 285.00 KiB/s, done.Total 3 (delta 2), reused 0 (delta 0)remote:remote: To create a merge request for test, visit:remote: https://codehub.devcloud.huaweicloud.com/codehub/nnnnnn/newmerge...

如果對 git 命令行不熟悉,又沒有熟悉的客戶端工具支持較為復雜的合并選項,這些操作看起來有些復雜。所以如果不是執著于清除一些敏感(silly)的提交記錄,使用 DevCloud 的合并請求可能更為有效。具體操作在后面的章節中會有介紹。

合并請求及評審

曾經有位同事說他們團隊中的新人向代碼倉庫中提交的代碼太亂,問能不能從服務器中撤銷這些提交。雖然不是不可以,但撤銷總是比較麻煩。對于有新人加入團隊的情況,結對編程可能可以讓新人快速融入團隊,進行高質量的開發和提交。

如果條件不具備,可以參考 Martin Fowler 寫的 Reviewed Commits (https://martinfowler.com/articles/branching-patterns.html#reviewed-commits)這種分支模式,團隊非核心人員提交的代碼經過評審后,才能被合并到受控分支。

這種分支模式可與特性分支結合使用,比如開發人員小王在開始一項工作任務時,首先基于現有的開發分支 dev 建立一個特性分支 feature-w2, 在開發完成后,拉取 dev 的最新提交合并入 feature-w2, 解決完可能出現的合并沖突,將 feature-w2 推送到中心倉庫,然后發起從 feature-w2 向 dev 分支的合并請求。評審人收到合并請求后,進行代碼審查和意見反饋。在評審通過后,具有權限的人員執行合并操作,并刪除不再使用的分支 feature-w2。DevCloud 可以對這種模式提供很好的支持。

小王在將 feature-w2 推送到中心倉庫時,會收到一個提示信息,內含為 feature-w2 新建合并請求的 URL 鏈接,詳見上節 git push 的返回信息。打開此鏈接就可以在 DevCloud 中新建合并請求。在 DevCloud 代碼倉庫的合并請求頁簽下,可以查看現有的合并請求,也可以從此頁面新建合并請求。

合并請求頁簽

新建合并請求

在新建合并請求的過程中, DevCloud 會檢查準入條件,比如分支之間是否有差異,是否有沖突等。

新建合并請求詳細信息

在新建合并請求頁面,點擊標題編輯框, DevCloud 會基于歷史提交信息生成一個默認的標題,修改標題(可選),然后添加合并人和評審人(可選)后,單擊確定按鈕完成合并請求的創建。

評審人在合并請求頁簽下可以查看所有的合并請求,對選定的合并請求進行評論,包括其他評論信息和反饋信息、文件變更和提交記錄,從而決定關閉或拒絕合并請求。合并人單擊頁面右上角的“普通合并” 或 “刪除源分支合并” 完成合并操作。其中 “刪除源分支合并” 很好地支持了短特性分支實踐,可以避免留存過多不再使用的分支,減少混亂。

評審合并請求

Reviewed Commits 分支模式要求反饋要足夠迅速,如果反饋時間過長,小王就可能需要重新回想原先進行的工作,而且可能會因為 dev 分支上有了新的提交,出現合并沖突,造成不必要的浪費。

+“CH050791”后 回“冬哥”,可入qun交流~

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的如何新建分支上传_Git分支策略及操作演示1|IDCF FDCC认证学员作品的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人妻熟女一区二区三区app下载 | 精品伦一区二区三区 | 91日本精品 | 亚洲国产一区二区在线观看 | 国产一区不卡视频 | 黄色一级视频网站 | 久久久久久久久久久久 | 免费特级黄色片 | 在线免费av网站 | 超碰1997| 欧美日韩蜜桃 | 九九热最新网址 | 伊人超碰在线 | 亚洲最新色图 | 不用播放器看av | 337p粉嫩日本欧洲亚洲大胆 | av影院在线播放 | 亚洲成人黄 | 欧色图| 天天操夜夜欢 | 欧洲av网站| 亚洲午夜精品久久久 | a男人天堂 | 毛片视频播放 | 日韩国产一级 | 午夜簧片| 日韩中文av在线 | 国产一区二区视频在线观看免费 | 国产九色视频 | 人体写真 福利视频 | 欧美日韩在线视频一区二区三区 | 国产一区色 | 91免费看大片 | 国产91边播边对白在线 | 午夜激情视频在线观看 | 少妇日韩 | 伊人久久精品 | 国产一级在线免费观看 | 在线观看亚洲一区 | 亚洲欧美激情另类校园 | 夜夜狠狠 | av老司机福利 | 欧美性福利 | 成人h动漫精品一区二 | 欧美人禽杂交狂配 | 爱的色放韩国电影 | 国产精品亚洲专区无码牛牛 | 国产精品18久久久久久久久 | 成人精品久久久 | 九九九在线观看 | 嫩草影院在线观看视频 | 无码人妻aⅴ一区二区三区69岛 | 99热亚洲精品 | 91久久精品一区二区三区 | 成年在线视频 | 欧美精品一级二级三级 | 麻豆国产尤物av尤物在线观看 | 亚洲va天堂va欧美ⅴa在线 | 欧美一区二区在线观看视频 | 国产乱码精品一区二三区蜜臂 | 日韩色道 | 欧美最顶级a∨艳星 | 欧美美女性生活 | 国产精品99久久久久久久久 | 欧美精品123 | 免费美女av | 少妇一级淫片免费观看 | 91精品久久香蕉国产线看观看 | 97免费人妻无码视频 | 国产精品日韩欧美大师 | 蜜桃av噜噜一区二区三区网址 | 美女乱淫 | 亚洲精品成人网 | 无码人妻aⅴ一区二区三区69岛 | 国产一区二区视频免费观看 | 日韩精品一区二区三区无码专区 | 亚洲第一成人av | 美女露胸无遮挡 | 天天摸天天干 | 日韩免费在线观看视频 | 国产激情无码一区二区 | 久久久久久欧美精品se一二三四 | 天堂a√在线 | 伊人婷婷综合 | 特级黄色一级片 | 老牛影视av老牛影视av | 天天色天天插 | 爽爽影院免费观看 | 成人黄色一级视频 | 在线免费中文字幕 | 毛片动漫 | 天天干天天爱天天操 | 翔田千里在线播放 | 国产一区二区三区免费在线观看 | 在线观看成人一区 | 国产黄色网址在线观看 | 国产日日日 | 成人黄色大片在线观看 | 成人自拍视频网 |