華為云大咖說-如何利用Git提升研發效率?

      網友投稿 957 2025-03-31

      十年來研發工具鏈的變化

      傳統的研發管理平臺,是工具的松散的整合——>現在是各個系統深度整合。

      華為云大咖說-如何利用Git提升研發效率?

      以前研發工具鏈的核心是缺陷跟蹤、需求管理工具——> 如今Github這類代碼檢視工具成為核心,

      這種變化與團隊的組織架構變化有關, 十年前,角色定位清晰,界限分明,比如:開發、測試、運維、產品管理、用戶。但現在,技術的進步使這種界限逐漸模糊,比如:敏捷、CI構建、測試驅動開發使開發和測試的界限模糊;比如:DevOps讓開發和運維的界限模糊;用戶的身份也發生了變化,源碼開放,讓用戶從需求的提出方成為解決方案的參與方。

      在這種變化中,Git逐漸成為了主流。

      為什么是Git?

      更加自由

      *??人人皆可使用,人人皆可貢獻。(對開源項目的推廣尤為重要)

      *??任何時間、任何地點都可貢獻。(開源貢獻、移動辦公、云服務)

      更加安全

      *??分布式、多副本,降低存儲介質損壞的風險。

      *??數據不可篡改,防黑客攻擊。入侵服務器,無法更改倉庫。

      質量更高

      *??代碼檢視前置,在代碼合入之前。

      *??歷史提交可修改,精益求精的質量文化。

      Git譜系圖

      Git 是2005年 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。Git真正被世人了解和接受是在2008年Github的推出后。此后發生了基于Git的配置管理工具大爆發。2008年還有另外一個工具是Gerrit,它是谷歌開源的為安卓而生的Git工具。

      如何做好代碼檢視

      檢視應該是對提交過程逐個提交的review,而不是對最終結果的review。

      一個提交的修改量要少,以防說不清提交說明。

      要寫提交說明,提交說明出錯的話要修改。

      提交說明中需要包含測試用例。

      修改提交的常用Git語句及修正歷史提交示例如下圖:

      如何掌握Git?

      學習方法:以Git數據結構、文件系統為線索,Git命令都是在操作他們。

      四類Git對象

      * 問題:沒有提交的文件能夠找回么?

      ——git add后的可能能找回(使用git fsck和dangling objects)

      分支、reflog

      *??問題:分支多了,是不是倉庫空間占用變多了?

      —— 一個指針而已,不會占用很多空間。

      *??問題:誤用了git reset等操作破壞了當前分支,如何修復?

      ——從log中找到之前的恢復。

      *??問題:為什么倉庫做了裁剪,執行git gc,不見倉庫變小?

      ——reflog中的歷史提交沒有丟棄。

      DAG與三路合并

      *??問題:為什么提交回退(revert)、臟合并,導致合并中提交丟失?

      切莫采用SVN一樣的工作流

      抱怨:SVN提交只需要一個commit命令就夠了,Git為什么要兩個命令(git commit和git push)?

      提出這個抱怨的用戶一定是有兩個地方做錯了。一是把Git的工作流做錯了,不應該用共享倉庫式的工作流。另一種是不應該一次commit提交一次,而應該是多次commit一個特性提交一次。

      抱怨:我的提交被別人的強制推送(push--force)覆蓋了。

      出現這個問題就是因為采用了共享倉庫式的開發。使用這種方式的A和B可能會發生的問題如下圖所示。如果使用共享倉庫式,建議采用第三個方式。

      包含代碼檢視的工作流

      新的集中式工作流

      華為內部采取的一種新的集中式工作流:

      新的集中式工作流示例:

      實踐中可能遇到的問題

      選擇合適的工作流

      *??提交說明規范。

      *??工作流規范。

      *??編譯構建流程。

      精細代碼授權

      *??代碼私密性,Git不支持路徑授權,而是更大粒度的倉庫授權。

      *??所以,授權是倉庫分倉的原因之一。

      大倉庫管理

      *??歷史文件清理:git filter-branch。

      *??二進制文件管理:Git-LFS。

      *??分而治之:分倉。

      多倉庫管理

      *??子倉庫過多(10個以上?)不要使用submodule。此時推薦使用Android風格的多倉庫管理,由華為開發,叫做Git-MM。

      提問和解答

      在非開源項目里,我不希望程序員或者產品經理之類的角色能拿到所有代碼,要注意什么?

      答:將敏感的部分包括相關提交拿出來變成一個新的倉庫,這個工具叫Git fit branch,具體可以查看電子版《Git權威指南》,見www.worldhello.net

      SVN的歷史轉到Git能否保留?

      答:可以保留,使用Git svn這個工具可以實現歷史保留。

      如何更有效的解決沖突?

      答:最好就是進行好的模塊化設計,不要產生沖突。如果不可避免的發生了沖突,win上有很多代碼合并工具。

      Git cherry-pick的原理是什么?

      答:可以理解為將需要揀選的提交做成一個patch,再重新打到需要揀選的新的分支上去。感興趣的話可以去看一下源碼。

      如何說服boss從SVN轉到Git?

      答:有很多策略,如:友商都用Git,用Git可以做代碼review讓代碼質量更高,開源社區都在用Git,SVN的維護成本高、安全風險大。

      視頻鏈接:https://m.qlchat.com/wechat/page/topic-intro?topicId=840000204169950

      以上文字內容由【內容眾創興趣小組-孔皮皮】整理。

      軟件開發云

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:制作WPS文本目錄的三種方法
      下一篇:excel制作折線圖教程
      相關文章
      亚洲精品无码mⅴ在线观看| 久久99亚洲网美利坚合众国| 67pao强力打造67194在线午夜亚洲 | 亚洲成人午夜电影| 亚洲AV无码久久寂寞少妇| 国产亚洲日韩在线三区| 亚洲综合无码精品一区二区三区| 亚洲欧洲一区二区三区| 国产午夜亚洲精品国产成人小说| 亚洲情a成黄在线观看| 亚洲精品动漫人成3d在线| 激情小说亚洲色图| 亚洲乱码中文字幕综合234| 亚洲一区二区三区无码影院| 亚洲男人的天堂在线va拉文| 亚洲午夜福利精品久久| 国产亚洲日韩在线三区| 亚洲国产成人一区二区精品区 | 亚洲日韩精品国产一区二区三区| 久久久国产亚洲精品| 亚洲日韩乱码中文字幕| 色天使亚洲综合一区二区| 国产亚洲精品第一综合| 亚洲视频在线一区二区| 狠狠亚洲婷婷综合色香五月排名| 亚洲精品卡2卡3卡4卡5卡区| 亚洲va无码va在线va天堂| 亚洲好看的理论片电影| 亚洲白嫩在线观看| 亚洲中文字幕无码中文| 久久亚洲色WWW成人欧美| 亚洲精品视频在线看| 亚洲日本一区二区三区在线| 亚洲短视频男人的影院| 亚洲手机中文字幕| 亚洲第一成年免费网站| 亚洲中文字幕视频国产| 亚洲AV无码精品色午夜果冻不卡| 久久精品国产亚洲AV高清热| 亚洲激情视频图片| 久久久久久久久无码精品亚洲日韩|