g4e 是 Git for Enterprise Developer的簡寫,這個系列文章會統一使用g4e做爲標識,便於你們查看和搜索。git
章節目錄github
前言編程
1. 基礎篇:微信
- 爲何要使用版本控制系統
- Git 分佈式版本控制系統的優點
- Git 安裝和設置
- 初始化Git存儲庫(Repo)
- 起步 1 – 建立分支和保存代碼
- 起步 2 – 瞭解Git歷史記錄
- 起步 3 – 拉取請求 Pull Request 工做機制
Git是一種版本控制系統,讓咱們首先了解一下使用版本控制系統的必要性。markdown
版本控制系統有助於你跟蹤和保存在一段時間內所修改的代碼,同時幫助你跟蹤全部你所做出的變動,它就如同一部相機,不停的幫助你記錄某一時刻的代碼狀態快照並永久保存這些快照,以便你能夠在將來的任什麼時候間找回以前的改動。架構
若是沒有版本控制系統,你須要在本身的計算機上保存同一份代碼的多個副本才能確保知足不少常見的開發場景。我相信不少剛剛接觸編程的同窗都這樣作過,可是這樣作會很是危險,由於你可能會誤刪或者修改了其中某些文件,形成工做丟失,最糟糕的是,你沒法知道你爲何作了這些改動以及作了什麼改動。在團隊開發的場景下,版本控制系統變得更加劇要,由於你會很是頻繁的和其餘開發人員交換代碼,有時須要同步,有時須要並行,若是沒有版本控制系統,這一切會變成每一個人的噩夢,讓你沒法專一於你的開發工做,形成極大的浪費的效率損失。運維
對於企業開發者而言,若是沒有版本控制系統基本上就沒法開展平常工做,由於與我的開發不一樣的是,企業開發須要幾十人甚至成百上千人協同完成開發工做。同時,企業級軟件還存在多個並行發佈版本,多個運行環境(調測,測試,預生產,生產等),多種專業分工(架構,設計,開發,測試,運維)等複雜狀況;要適應這樣複雜的狀況,沒有高效的版本控制系統和適當的分支策略和流程控制是不可能實現的。ssh
簡單總結一下使用版本控制系統的好處以下:分佈式
統一工做方式:版本控制系統工做流可防止每一個人使用各類不兼容的工具按照本身的習慣進行開發的混亂局面。 版本控制系統提供流程強制執行措施和權控制能力,讓全部人都有章可循。這對於企業開發者尤爲重要,雖然軟件開發是很是強調單個開發者個性的過程,但團隊開發中個性化的環境和工具只能形成協做效率的降低,所以經過統一的版本控制工具來統一全部人的工做方式相當重要。ide
跟蹤改動:每一個版本都有一個關於版本更改(如修復 bug 或新增功能)的說明。 此說明有助於按版本(而不是按各個文件更改)來跟蹤代碼更改。 能夠根據須要隨時在版本控制系統中查看和還原各個版本中存儲的代碼。 這樣一來,你就能夠在任意一版代碼的基礎上輕鬆開展新工做。這一特性對於不少企業開發中場景的場景很是有幫助,好比:在同步開發新版本的時候須要臨時解決一個線上問題,咱們必須可以精準定位線上環境所使用的代碼版本,在這個版本上進行修復並快速發佈解決問題,同時還要確保這個bug修復不會在將來版本被遺漏。
團隊協做:版本控制系統能夠幫助不一樣開發人員同步代碼版本,並確保你的更改不會與團隊其餘成員的更改相互衝突。 團隊依賴版本控制系統中的各類功能來預防和解決衝突,讓團隊成員能夠同時進行代碼修改。不少人在使用版本控制系統時最頭疼就是衝突的解決,所以不少團隊會禁止成員使用分支。對分支進行必定程度的控制是頗有必要的,可是控制過死會讓團隊成員束手束腳,形成團隊成員之間的緊耦合,從而下降開發效率。有效的分支策略須要綜合考慮多種因素,包括:團隊結構,發佈方式,環境部署流程,職能團隊間的配合,代碼質量的控制等。Git所表明的分佈式版本控制系統有效的平衡了管控和自由之間的矛盾,容許你設計成最適合你的團隊的編碼協做模式。
保留歷史:在團隊保存代碼的新版本時,版本控制系統會保留變動歷史記錄。 團隊成員能夠查看此歷史記錄,瞭解是誰在什麼時候進行更改以及更改緣由。 有了歷史記錄,你就有信心進行各類嘗試和探索,由於能夠隨時回退到上一正常版本。歷史記錄不只僅能夠幫助成員有效的瞭解代碼的前因後果,還能幫助成員避免犯錯誤。基於歷史記錄進行必定的數據分析後,咱們可讓開發人員更智能的進行工做。
配合持續集成:持續集成/發佈工具必須和版本控制系統有效的集成才能發揮出真正的能量,一個高效的分支策略的設計必須考慮持續集成和發佈的要求,同時兼顧開發流程的有效性。持續集成和持續發佈已經成爲現代企業級軟件開發的必需品,下降軟件發佈過程的成本,減小錯誤,避免失誤,這些都須要CI/CD的配合。可是咱們改在怎樣的代碼版本上進行CI/CD,這恐怕是困擾不少人的難題。我見到的大多數團隊的CI/CD都是與某一分支綁定的,這其實一種錯誤的作法,由於這樣你只能在代碼已經進入分支以後才能進行驗證,CI對於代碼質量的驗證成爲了馬後炮,沒法起到預防的做用;使用Git咱們能夠針對代碼變動進行預評審,預合併和預構建和發佈,讓你更爲有效的組織本身的CI/CD流水線。
小結
版本控制系統的優化對於提升軟件開發團隊效率相當重要,充分了解你所使用的版本控制系統的特性並加以利用是每一個開發人員都必須掌握的基本能力。
相關文章:
- 微軟研發雲全家桶VSTS登錄中國
- Markdown/reST 文檔發佈流水線
- 幾款好用的Git GUI客戶端工具
- 使用 SSH 鏈接 TFS/VSTS 的GIT倉庫
- GitHub + VSTS 開源代碼雙向同步
請關注微信公衆號 【devopshub】,獲取更多關於DevOps研發運維一體化的信息