版本控制工具也叫CVS,經常使用版本工具從實現上來講能夠分爲如下三類:本地版本控制系統、集中化版本控制系統、分佈式版本控制系統,下面我來一一介紹一下這3種的區別。html
本地版本控制系統:最初的版本控制,只是在本地進行保存,每次有修改後就在本地保存一份新代碼。它能夠保存好本身的全部修改,一我的的項目用一用仍是沒問題的,可是考慮到團隊協做的時候不方便,因此已經被淘汰了。linux
集中化版本控制系統:新增了一個遠程服務端,支持多電腦和服務端之間的溝通環節,這樣大大方便了團隊之間的合做。在電腦A上的提交能夠上傳到服務端上,而後電腦B上能夠拉取剛剛的修改。這種也是目前主流的版本控制系統之一,好比SVN就是使用的集中化版本控制系統。可是一旦斷網,就無法進行提交代碼了。git
分佈式版本控制系統:在集中化的基礎上,又新增了一個本地的版本控制系統。相似於集中化和本地的結合體,能夠下降服務端掛了的風險。增長了本地的版本控制之後,就算服務端出問題再也不接收代碼,本地仍然能夠正常工做。目前最流行的版本控制方式,好比git就是如此。
github
區別一 git是分佈式,全部操做在本地執行,切斷服務器不影響本地代碼的保存瀏覽器
區別二 git是記錄全部文件的快照,其餘CVS是記錄每次修改的增量
bash
其餘CVS只是記錄了每次的增量數據,因此每次提交的時候都須要去對比代碼變化,得出一個增量變化,服務端將增量變化進行保存。因此其餘CVS在切換分支的時候會比git慢不少,由於它們要根據增量去計算當前最新文件是什麼樣的。而git是記錄全部的文件,每次有修改後就記錄成新的文件,這也就是爲何當不一樣人在同一分支上提交時,就算沒有衝突也須要git pull的緣由。由於後面的那次提交和前面的那次提交不同,系統不知道記錄哪一個文件爲最新文件。
服務器
圖1.其餘CVS的工做原理ssh
圖2.git的工做原理分佈式
首先下載git,而後雙擊安裝,一路點肯定,使用默認配置便可。工具
隨便進入一個目錄,而後點擊鼠標右鍵,若是有git bash選項,則說明安裝成功。
每臺電腦都須要配置一下當前機器的git信息,用來惟一標註該電腦。使用git config命令進行配置,能夠選用global參數,表明該電腦上全部庫都採用這個用戶信息。
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
複製代碼
git命令真的太多了,我這裏只列舉一些工做中最經常使用的命令吧,背太多那些基本用不到的命令也記不住。掌握了上圖這些基本的沒問題了,還有其餘的命令能夠碰到問題得時候再去查看。
建立一個名爲XX的分支,建立的時候須要注意看一下本身是在本地庫仍是遠程庫中。通常建議在本地庫中建立,而後提交的時候再放到遠程庫中。
切換到名爲XX的分支
合併XX分支上的內容到當前分支,合併之後若是有衝突,最好手動解決,不要用強制覆蓋的方式,強制覆蓋多了總會出問題的。
暫存當前分支上全部的修改到git緩衝區,暫存單個文件用git add 文件名
提交當前分支上的暫存數據到本地git庫中,這個時候當前分支纔算是真正更新成了最新代碼。這裏須要注意,只有提交了當前分支上的修改,才能夠切換其餘分支。
提交當前分支上的修改到遠程庫中,只有執行了push之後本身本地的代碼纔算是真正提交成功了。若此時推送失敗,多是其餘小夥伴也修改過這個分支。因此須要先git pull拉取一下遠程最新的代碼,若是其中有衝突,則須要解決完衝突之後再繼續提交。
從綁定的遠程庫中拉取最新的代碼到本地。若是多我的在同一分支上工做,則建議每次在開始工做時以及準備提交前先拉取一次,保證本地修改前的代碼和遠程一致。
git經常使用命令速查表:
下載sourceTree,而後點擊安裝,將會到達下面的界面,須要使用帳號才能繼續安裝。這個帳號可使用谷歌帳號,因此若是沒有谷歌帳號的話須要去申請一個。
登陸以後,會讓你設置github帳號信息,這裏直接點跳過就好
接下來會讓你設置ssh祕鑰,這裏能夠設置,也能夠點取消,後面再設置
接下來會彈出提示說沒設置Mercurial,我也不知道這是什麼東東,直接不使用就好
1.導入項目
導入項目有兩種方式,能夠從本地選擇項目以及填寫github地址的方式來導入項目。首先點擊克隆/新建,而後輸入github地址或者是選擇本地的項目。
2.檢出分支
點擊操做->檢出,選擇檢出新分支,而後選擇遠程的分支,輸入檢出後在本地的分支名,點擊肯定便可。
3.切換分支
切換分支很是方便,雙擊souceTree左邊面板上的分支名就能夠了。若是當前分支有修改文件,則須要先將修改進行貯藏才能夠切換哦。
4.拉取代碼
點擊上方操做欄上的拉取按鈕,將會彈出分支選擇框,選擇好想要拉取的分支,點擊肯定便可
5.暫存代碼
選中工做副本,而後點擊暫存全部便可暫存全部文件。也能夠選擇性地暫存某個文件,先選擇好而後點暫存所選就能夠了。
6.提交代碼
在已有已暫存代碼後,再如上圖的3 4 5操做,首先輸入好上傳的文案,而後選中推送的複選框,最後點提交便可。須要注意的是,這裏的提交其實至關因而commit+push,在提交到本地的同時,也會直接推送到遠程服務器上。
7.貯藏代碼
點擊上面的貯藏按鈕對當前分支上的已修改代碼進行貯藏,貯藏時能夠選擇是否保留已暫存代碼。貯藏後能夠點擊左下角的貯藏功能查看剛纔的貯藏曆史,而後點擊應用貯藏便可將剛纔的代碼恢復到分支上。這個功能仍是很好用的,當目前分支上已有修改,而且當前並不想提交的時候,而又須要切換分支時,就能夠對當前的已修改代碼進行貯藏。
1.在github上新建倉庫
2.拉取剛新建的空項目
在建立完項目後,就能夠獲取到項目的github地址,其實就是github在瀏覽器上的地址。獲取到之後隨便找個文件夾下,右鍵git bash,而後git clone 該項目,將該空項目拉取下來,拉取空項目的目的是拉取.git配置。
3.上傳項目代碼
將實際項目代碼複製到前面clone的那個空文件夾下,最後依次執行git命令
git add .
git commit -m ""
git push
便可
4.上傳readme圖片
首先在github項目上新建一個文件夾,將圖片放入其中,並push到服務端。而後再github上點擊查看圖片詳情,複製圖片在github上的url。接下來點擊到readme中,使用如下規則添加剛剛提交的圖片:
通常來講若是你是項目的第一個開發人員的話,還要搭建一個功能相似於github的私有git服務器。有人會問爲何不直接用github呢,緣由是github上代碼若是不交錢是公開的,總沒有人願意把本身公司代碼公開給別人隨便看吧,更沒人願意爲了避免須要交錢的東西去交錢吧。
搭建服務器?聽起來很恐怖,但其實也是很是的簡單,linux提供好了相應的命令,只須要按照命令一個一個往下執行就行了,我這裏給出一個寫得不錯的教程吧,有須要的同窗能夠拿去直接用。教程連接
大廠使用git的方式通常和github上的開源項目同樣。首先git服務器確定是他們本身搭建的,項目成員經過fork源項目的方式創建本身的遠程副本。每次工做時首先在本身本地拉取源項目的develop分支,而後修改代碼後首先提交到本身的遠程副本中,經過merge request的方式向源項目發起合併代碼請求。在通過代碼review之後,有些review較嚴格的團隊會合到源項目的其餘分支上,通過修改後最終提測的代碼纔會合到develop上,也有些團隊直接合到develop上進行提測,提測通常是將git項目綁定好jenkins,而後在jenkins上選擇好分支點擊便可。在提測結束之後百分百穩定的代碼纔會合到master上面,確保master的代碼基本穩定。這個時候就新建bugfix分支用來發小版本解決上個版本的bug以及新增一些小需求,在bugfix提交完成後最終合併到develop以及master上面,修改版本號進行下一個版本的開發。
版本控制工具大大地提高了團隊開發的效率,而git又是CVS中目前最主流的工具。本文介紹了git和其餘CVS的對比,列出了我以爲工做中最經常使用的命令。而後推薦了我本身也在用的sourceTree工具,沒用過的小夥伴相信我,用過了確定會相見恨晚的。最後分享了一下如何上傳本身的代碼到github中,以及大廠是怎麼使用git的,但願能對你們有所幫助!