關於git,你真的徹底懂了嗎?

版本控制系統介紹

CVS分類

       版本控制工具也叫CVS,經常使用版本工具從實現上來講能夠分爲如下三類:本地版本控制系統、集中化版本控制系統、分佈式版本控制系統,下面我來一一介紹一下這3種的區別。html

       本地版本控制系統:最初的版本控制,只是在本地進行保存,每次有修改後就在本地保存一份新代碼。它能夠保存好本身的全部修改,一我的的項目用一用仍是沒問題的,可是考慮到團隊協做的時候不方便,因此已經被淘汰了。linux

       集中化版本控制系統:新增了一個遠程服務端,支持多電腦和服務端之間的溝通環節,這樣大大方便了團隊之間的合做。在電腦A上的提交能夠上傳到服務端上,而後電腦B上能夠拉取剛剛的修改。這種也是目前主流的版本控制系統之一,好比SVN就是使用的集中化版本控制系統。可是一旦斷網,就無法進行提交代碼了。git

       分佈式版本控制系統:在集中化的基礎上,又新增了一個本地的版本控制系統。相似於集中化和本地的結合體,能夠下降服務端掛了的風險。增長了本地的版本控制之後,就算服務端出問題再也不接收代碼,本地仍然能夠正常工做。目前最流行的版本控制方式,好比git就是如此。
github


git和其餘CVS的主要區別

區別一  git是分佈式,全部操做在本地執行,切斷服務器不影響本地代碼的保存瀏覽器

區別二  git是記錄全部文件的快照,其餘CVS是記錄每次修改的增量
bash

       其餘CVS只是記錄了每次的增量數據,因此每次提交的時候都須要去對比代碼變化,得出一個增量變化,服務端將增量變化進行保存。因此其餘CVS在切換分支的時候會比git慢不少,由於它們要根據增量去計算當前最新文件是什麼樣的。而git是記錄全部的文件,每次有修改後就記錄成新的文件,這也就是爲何當不一樣人在同一分支上提交時,就算沒有衝突也須要git pull的緣由。由於後面的那次提交和前面的那次提交不同,系統不知道記錄哪一個文件爲最新文件。
服務器

                                     圖1.其餘CVS的工做原理ssh


                                   圖2.git的工做原理分佈式


git的安裝

如何安裝git?

       首先下載git,而後雙擊安裝,一路點肯定,使用默認配置便可。工具

如何檢測git是否安裝成功

       隨便進入一個目錄,而後點擊鼠標右鍵,若是有git bash選項,則說明安裝成功。

如何配置git用戶信息

       每臺電腦都須要配置一下當前機器的git信息,用來惟一標註該電腦。使用git config命令進行配置,能夠選用global參數,表明該電腦上全部庫都採用這個用戶信息。

git config --global user.name "Your Name"
git config --global user.email "email@example.com"
複製代碼


git經常使用命令

git命令真的太多了,我這裏只列舉一些工做中最經常使用的命令吧,背太多那些基本用不到的命令也記不住。掌握了上圖這些基本的沒問題了,還有其餘的命令能夠碰到問題得時候再去查看。

git branch XX  

建立一個名爲XX的分支,建立的時候須要注意看一下本身是在本地庫仍是遠程庫中。通常建議在本地庫中建立,而後提交的時候再放到遠程庫中。

git checkout XX

切換到名爲XX的分支

git merge XX

合併XX分支上的內容到當前分支,合併之後若是有衝突,最好手動解決,不要用強制覆蓋的方式,強制覆蓋多了總會出問題的。

git add . 

暫存當前分支上全部的修改到git緩衝區,暫存單個文件用git add 文件名

git commit -m "message"

提交當前分支上的暫存數據到本地git庫中,這個時候當前分支纔算是真正更新成了最新代碼。這裏須要注意,只有提交了當前分支上的修改,才能夠切換其餘分支。

git push

提交當前分支上的修改到遠程庫中,只有執行了push之後本身本地的代碼纔算是真正提交成功了。若此時推送失敗,多是其餘小夥伴也修改過這個分支。因此須要先git pull拉取一下遠程最新的代碼,若是其中有衝突,則須要解決完衝突之後再繼續提交。

git pull

從綁定的遠程庫中拉取最新的代碼到本地。若是多我的在同一分支上工做,則建議每次在開始工做時以及準備提交前先拉取一次,保證本地修改前的代碼和遠程一致。

git經常使用命令速查表:



sourceTree-簡單實用的圖形化git工具

安裝sourceTree

       下載sourceTree,而後點擊安裝,將會到達下面的界面,須要使用帳號才能繼續安裝。這個帳號可使用谷歌帳號,因此若是沒有谷歌帳號的話須要去申請一個。

登陸以後,會讓你設置github帳號信息,這裏直接點跳過就好

接下來會讓你設置ssh祕鑰,這裏能夠設置,也能夠點取消,後面再設置

接下來會彈出提示說沒設置Mercurial,我也不知道這是什麼東東,直接不使用就好

sourceTree基本使用

1.導入項目

       導入項目有兩種方式,能夠從本地選擇項目以及填寫github地址的方式來導入項目。首先點擊克隆/新建,而後輸入github地址或者是選擇本地的項目。

2.檢出分支

       點擊操做->檢出,選擇檢出新分支,而後選擇遠程的分支,輸入檢出後在本地的分支名,點擊肯定便可。

3.切換分支

       切換分支很是方便,雙擊souceTree左邊面板上的分支名就能夠了。若是當前分支有修改文件,則須要先將修改進行貯藏才能夠切換哦。

4.拉取代碼

       點擊上方操做欄上的拉取按鈕,將會彈出分支選擇框,選擇好想要拉取的分支,點擊肯定便可

5.暫存代碼

       選中工做副本,而後點擊暫存全部便可暫存全部文件。也能夠選擇性地暫存某個文件,先選擇好而後點暫存所選就能夠了。

6.提交代碼

       在已有已暫存代碼後,再如上圖的3 4 5操做,首先輸入好上傳的文案,而後選中推送的複選框,最後點提交便可。須要注意的是,這裏的提交其實至關因而commit+push,在提交到本地的同時,也會直接推送到遠程服務器上。

7.貯藏代碼

       點擊上面的貯藏按鈕對當前分支上的已修改代碼進行貯藏,貯藏時能夠選擇是否保留已暫存代碼。貯藏後能夠點擊左下角的貯藏功能查看剛纔的貯藏曆史,而後點擊應用貯藏便可將剛纔的代碼恢復到分支上。這個功能仍是很好用的,當目前分支上已有修改,而且當前並不想提交的時候,而又須要切換分支時,就能夠對當前的已修改代碼進行貯藏。


上傳項目到github

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中,使用如下規則添加剛剛提交的圖片:

               ![圖片異常](圖片完整url)
       其中前面的圖片異常只是沒找到圖片時的提示,重點是後面小括號內的url填剛剛複製的url便可。


搭建本身的git服務器

       通常來講若是你是項目的第一個開發人員的話,還要搭建一個功能相似於github的私有git服務器。有人會問爲何不直接用github呢,緣由是github上代碼若是不交錢是公開的,總沒有人願意把本身公司代碼公開給別人隨便看吧,更沒人願意爲了避免須要交錢的東西去交錢吧。

        搭建服務器?聽起來很恐怖,但其實也是很是的簡單,linux提供好了相應的命令,只須要按照命令一個一個往下執行就行了,我這裏給出一個寫得不錯的教程吧,有須要的同窗能夠拿去直接用。教程連接


大廠是如何使用git的

       大廠使用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的,但願能對你們有所幫助!

相關文章
相關標籤/搜索