g4e基础篇#1 为什么要使用版本控制系统
本篇是Git企業(yè)開發(fā)者教程基礎(chǔ)篇的第一篇
1. 基礎(chǔ)篇:
為什么要使用版本控制系統(tǒng)
Git 分布式版本控制系統(tǒng)的優(yōu)勢
Git 安裝和設(shè)置
初始化Git存儲庫(Repo)
起步 1 – 創(chuàng)建分支和保存代碼
起步 2 – 了解Git歷史記錄
起步 3 – 拉取請求 Pull Request 工作機制
Git是一種版本控制系統(tǒng),讓我們首先了解一下使用版本控制系統(tǒng)的必要性。
版本控制系統(tǒng)有助于你跟蹤和保存在一段時間內(nèi)所修改的代碼,同時幫助你跟蹤所有你所作出的變更,它就如同一部相機,不停的幫助你記錄某一時刻的代碼狀態(tài)快照并永久保存這些快照,以便你可以在未來的任何時間找回之前的改動。
如果沒有版本控制系統(tǒng),你需要在自己的計算機上保存同一份代碼的多個副本才能確保滿足很多常見的開發(fā)場景。我相信很多剛剛接觸編程的同學(xué)都這樣做過,但是這樣做會非常危險,因為你可能會誤刪或者修改了其中某些文件,造成工作丟失,最糟糕的是,你無法知道你為什么做了這些改動以及做了什么改動。在團隊開發(fā)的場景下,版本控制系統(tǒng)變得更加重要,因為你會非常頻繁的和其他開發(fā)人員交換代碼,有時需要同步,有時需要并行,如果沒有版本控制系統(tǒng),這一切會變成每個人的噩夢,讓你無法專注于你的開發(fā)工作,造成極大的浪費的效率損失。
對于企業(yè)開發(fā)者而言,如果沒有版本控制系統(tǒng)基本上就無法開展日常工作,因為與個人開發(fā)不同的是,企業(yè)開發(fā)需要幾十人甚至成百上千人協(xié)同完成開發(fā)工作。同時,企業(yè)級軟件還存在多個并行發(fā)布版本,多個運行環(huán)境(調(diào)測,測試,預(yù)生產(chǎn),生產(chǎn)等),多種專業(yè)分工(架構(gòu),設(shè)計,開發(fā),測試,運維)等復(fù)雜情況;要適應(yīng)這樣復(fù)雜的情況,沒有高效的版本控制系統(tǒng)和適當(dāng)?shù)姆种Р呗院土鞒炭刂剖遣豢赡軐崿F(xiàn)的。
簡單總結(jié)一下使用版本控制系統(tǒng)的好處如下:
統(tǒng)一工作方式:版本控制系統(tǒng)工作流可防止每個人使用各種不兼容的工具按照自己的習(xí)慣進行開發(fā)的混亂局面。?版本控制系統(tǒng)提供流程強制執(zhí)行措施和權(quán)控制能力,讓所有人都有章可循。這對于企業(yè)開發(fā)者尤其重要,雖然軟件開發(fā)是非常強調(diào)單個開發(fā)者個性的過程,但團隊開發(fā)中個性化的環(huán)境和工具只能造成協(xié)作效率的下降,因此通過統(tǒng)一的版本控制工具來統(tǒng)一所有人的工作方式至關(guān)重要。
跟蹤改動:每個版本都有一個關(guān)于版本更改(如修復(fù) bug 或新增功能)的說明。 此說明有助于按版本(而不是按各個文件更改)來跟蹤代碼更改。 可以根據(jù)需要隨時在版本控制系統(tǒng)中查看和還原各個版本中存儲的代碼。 這樣一來,你就可以在任意一版代碼的基礎(chǔ)上輕松開展新工作。這一特性對于很多企業(yè)開發(fā)中場景的場景非常有幫助,比如:在同步開發(fā)新版本的時候需要臨時解決一個線上問題,我們必須能夠精準定位線上環(huán)境所使用的代碼版本,在這個版本上進行修復(fù)并快速發(fā)布解決問題,同時還要確保這個bug修復(fù)不會在未來版本被遺漏。
團隊協(xié)作:版本控制系統(tǒng)可以幫助不同開發(fā)人員同步代碼版本,并確保你的更改不會與團隊其他成員的更改相互沖突。 團隊依賴版本控制系統(tǒng)中的各種功能來預(yù)防和解決沖突,讓團隊成員可以同時進行代碼修改。很多人在使用版本控制系統(tǒng)時最頭疼就是沖突的解決,因此很多團隊會禁止成員使用分支。對分支進行一定程度的控制是很有必要的,但是控制過死會讓團隊成員束手束腳,造成團隊成員之間的緊耦合,從而降低開發(fā)效率。有效的分支策略需要綜合考慮多種因素,包括:團隊結(jié)構(gòu),發(fā)布方式,環(huán)境部署流程,職能團隊間的配合,代碼質(zhì)量的控制等。Git所代表的分布式版本控制系統(tǒng)有效的平衡了管控和自由之間的矛盾,允許你設(shè)計成最適合你的團隊的編碼協(xié)作模式。
保留歷史:在團隊保存代碼的新版本時,版本控制系統(tǒng)會保留變更歷史記錄。 ?團隊成員可以查看此歷史記錄,了解是誰在何時進行更改以及更改原因。 有了歷史記錄,你就有信心進行各種嘗試和探索,因為可以隨時回退到上一正常版本。歷史記錄不僅僅可以幫助成員有效的了解代碼的來龍去脈,還能幫助成員避免犯錯誤。基于歷史記錄進行一定的數(shù)據(jù)分析后,我們可以讓開發(fā)人員更智能的進行工作。
配合持續(xù)集成:持續(xù)集成/發(fā)布工具必須和版本控制系統(tǒng)有效的集成才能發(fā)揮出真正的能量,一個高效的分支策略的設(shè)計必須考慮持續(xù)集成和發(fā)布的要求,同時兼顧開發(fā)流程的有效性。持續(xù)集成和持續(xù)發(fā)布已經(jīng)成為現(xiàn)代企業(yè)級軟件開發(fā)的必需品,降低軟件發(fā)布過程的成本,減少錯誤,避免失誤,這些都需要CI/CD的配合。但是我們改在怎樣的代碼版本上進行CI/CD,這恐怕是困擾很多人的難題。我見到的大多數(shù)團隊的CI/CD都是與某一分支綁定的,這其實一種錯誤的做法,因為這樣你只能在代碼已經(jīng)進入分支之后才能進行驗證,CI對于代碼質(zhì)量的驗證成為了馬后炮,無法起到預(yù)防的作用;使用Git我們可以針對代碼變更進行預(yù)評審,預(yù)合并和預(yù)構(gòu)建和發(fā)布,讓你更為有效的組織自己的CI/CD流水線。
小結(jié)
版本控制系統(tǒng)的優(yōu)化對于提高軟件開發(fā)團隊效率至關(guān)重要,充分了解你所使用的版本控制系統(tǒng)的特性并加以利用是每個開發(fā)人員都必須掌握的基本能力。
原文地址:http://devopshub.cn/2018/01/02/g4e-basic-1-about-version-control/
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的g4e基础篇#1 为什么要使用版本控制系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DevOps文档中心的技术实践演进
- 下一篇: g4e基础篇#2 Git分布式版本控制系