g4e基礎篇#1 為什麼要使用版本控制系統

北京的201個藍天發表於2018-01-03

g4e 是 Git for Enterprise Developer的簡寫,這個系列文章會統一使用g4e作為標識,便於大家檢視和搜尋。

章節目錄

前言

1. 基礎篇:

  • 為什麼要使用版本控制系統
  • Git 分散式版本控制系統的優勢
  • Git 安裝和設定
  • 初始化Git儲存庫(Repo)
  • 起步 1 – 建立分支和儲存程式碼
  • 起步 2 – 瞭解Git歷史記錄
  • 起步 3 – 拉取請求 Pull Request 工作機制

Git是一種版本控制系統,讓我們首先了解一下使用版本控制系統的必要性。

版本控制系統有助於你跟蹤和儲存在一段時間內所修改的程式碼,同時幫助你跟蹤所有你所作出的變更,它就如同一部相機,不停的幫助你記錄某一時刻的程式碼狀態快照並永久儲存這些快照,以便你可以在未來的任何時間找回之前的改動。

如果沒有版本控制系統,你需要在自己的計算機上儲存同一份程式碼的多個副本才能確保滿足很多常見的開發場景。我相信很多剛剛接觸程式設計的同學都這樣做過,但是這樣做會非常危險,因為你可能會誤刪或者修改了其中某些檔案,造成工作丟失,最糟糕的是,你無法知道你為什麼做了這些改動以及做了什麼改動。在團隊開發的場景下,版本控制系統變得更加重要,因為你會非常頻繁的和其他開發人員交換程式碼,有時需要同步,有時需要並行,如果沒有版本控制系統,這一切會變成每個人的噩夢,讓你無法專注於你的開發工作,造成極大的浪費的效率損失。

對於企業開發者而言,如果沒有版本控制系統基本上就無法開展日常工作,因為與個人開發不同的是,企業開發需要幾十人甚至成百上千人協同完成開發工作。同時,企業級軟體還存在多個並行釋出版本,多個執行環境(調測,測試,預生產,生產等),多種專業分工(架構,設計,開發,測試,運維)等複雜情況;要適應這樣複雜的情況,沒有高效的版本控制系統和適當的分支策略和流程控制是不可能實現的。

簡單總結一下使用版本控制系統的好處如下:

g4e-1-1

統一工作方式:版本控制系統工作流可防止每個人使用各種不相容的工具按照自己的習慣進行開發的混亂局面。 版本控制系統提供流程強制執行措施和權控制能力,讓所有人都有章可循。這對於企業開發者尤其重要,雖然軟體開發是非常強調單個開發者個性的過程,但團隊開發中個性化的環境和工具只能造成協作效率的下降,因此通過統一的版本控制工具來統一所有人的工作方式至關重要。

g4e-1-2

跟蹤改動:每個版本都有一個關於版本更改(如修復 bug 或新增功能)的說明。 此說明有助於按版本(而不是按各個檔案更改)來跟蹤程式碼更改。 可以根據需要隨時在版本控制系統中檢視和還原各個版本中儲存的程式碼。 這樣一來,你就可以在任意一版程式碼的基礎上輕鬆開展新工作。這一特性對於很多企業開發中場景的場景非常有幫助,比如:在同步開發新版本的時候需要臨時解決一個線上問題,我們必須能夠精準定位線上環境所使用的程式碼版本,在這個版本上進行修復並快速釋出解決問題,同時還要確保這個bug修復不會在未來版本被遺漏。

g4e-1-3

團隊協作:版本控制系統可以幫助不同開發人員同步程式碼版本,並確保你的更改不會與團隊其他成員的更改相互衝突。 團隊依賴版本控制系統中的各種功能來預防和解決衝突,讓團隊成員可以同時進行程式碼修改。很多人在使用版本控制系統時最頭疼就是衝突的解決,因此很多團隊會禁止成員使用分支。對分支進行一定程度的控制是很有必要的,但是控制過死會讓團隊成員束手束腳,造成團隊成員之間的緊耦合,從而降低開發效率。有效的分支策略需要綜合考慮多種因素,包括:團隊結構,釋出方式,環境部署流程,職能團隊間的配合,程式碼質量的控制等。Git所代表的分散式版本控制系統有效的平衡了管控和自由之間的矛盾,允許你設計成最適合你的團隊的編碼協作模式。

g4e-1-4

保留歷史:在團隊儲存程式碼的新版本時,版本控制系統會保留變更歷史記錄。  團隊成員可以檢視此歷史記錄,瞭解是誰在何時進行更改以及更改原因。 有了歷史記錄,你就有信心進行各種嘗試和探索,因為可以隨時回退到上一正常版本。歷史記錄不僅僅可以幫助成員有效的瞭解程式碼的來龍去脈,還能幫助成員避免犯錯誤。基於歷史記錄進行一定的資料分析後,我們可以讓開發人員更智慧的進行工作。

g4e-1-5

配合持續整合:持續整合/釋出工具必須和版本控制系統有效的整合才能發揮出真正的能量,一個高效的分支策略的設計必須考慮持續整合和釋出的要求,同時兼顧開發流程的有效性。持續整合和持續釋出已經成為現代企業級軟體開發的必需品,降低軟體釋出過程的成本,減少錯誤,避免失誤,這些都需要CI/CD的配合。但是我們改在怎樣的程式碼版本上進行CI/CD,這恐怕是困擾很多人的難題。我見到的大多數團隊的CI/CD都是與某一分支繫結的,這其實一種錯誤的做法,因為這樣你只能在程式碼已經進入分支之後才能進行驗證,CI對於程式碼質量的驗證成為了馬後炮,無法起到預防的作用;使用Git我們可以針對程式碼變更進行預評審,預合併和預構建和釋出,讓你更為有效的組織自己的CI/CD流水線。

小結

版本控制系統的優化對於提高軟體開發團隊效率至關重要,充分了解你所使用的版本控制系統的特性並加以利用是每個開發人員都必須掌握的基本能力。


相關文章:


請關注微信公眾號 【devopshub】,獲取更多關於DevOps研發運維一體化的資訊

qrcode_for_gh_b7c158df1fd1_430

相關文章