Git&GitHub學習和運用(1.介紹和使用)

1.版本控制系統主要用途

協同開發git

  一般在軟件項目的開發建設過程當中,通常會有多名工做人員同時對項目開展工做,那麼此時的項目工程不多是一個獨立的資源,這個時候就須要將項目工程提供給各個工做人員對同一份項目進行操做。服務器

 

衝突解決分佈式

  在軟件協同開發的過程當中,頗有可能出現多名開發人員對同一個功能下的同一文件進行編輯,因爲各自的編輯的內容不一樣,那麼在上傳編輯的內容時就會發生衝突,此時版本控制系統就有一種機制來解決衝突。svn

 

版本記錄工具

  每輛車到了必定時間都會有更新換代的時候,軟件項目亦是如此,軟件項目會根據不一樣業務階段迭代造成不一樣階段的版本,那麼此時就須要版本控制系統來對不一樣的版本進行記錄。 spa

  有版本的記錄咱們能夠根據不一樣的使用場景對項目版本進行調度使用,例如項目接入了某個新的功能,在上線後出現了很嚴重的Bug,而且Bug很難再一時之間解決,這個時候爲了保險起見不影響正常的業務,一般會要求項目回退到新功能上線前的一個版本,因爲版本控制系統的記錄功能,此時咱們能夠穩定快速的進行版本的回退操做。命令行

 

歷史追查3d

  項目接入了版本控制,那麼任何對項目的操做都會留下痕跡。例如在生產環境出現Bug,咱們能夠經過版本控制系統查閱開發階段是誰負責編寫的代碼,以便進行追責。另外也能夠用於不一樣版本之間對代碼的改動進行分析。版本控制

 

分支管理code

  一般實際項目中,咱們的軟件工程文件不會僅僅只有單獨一份。咱們會根據不一樣的場景將軟件工程文件劃分爲多份。

  試想下若是你的項目工程只有一份,當你正如火如荼的開發實現新的需求功能時,在生產環境上出現了Bug須要及時的修復,此時你只能在僅有的一份項目工程中進行Bug修復,可是新開發的功能尚未完成,這就產生了一個混亂的局面。

  因此咱們必須對項目工程經過版本控制系統創建不一樣的分支體系,每一個使用場景都是獨立的,不一樣使用場景之間就不會出現衝突。


 2.集中式與分佈式

2.1.集中式版本控制系統

結構圖:

  集中式實現了大部分開發中對項目版本控制的需求功能,結構簡單,上手容易。另外集中式版本控制系統存在一個很明顯的問題,全部的項目文件都集中存儲在一臺服務器上,一旦服務器出現問題(崩潰、硬件損壞),那麼項目文件會有丟失的風險。

 

  經典的集中式版本控制系統包括如下:

    CVS:很老的系統太過陳舊、簡陋;

    VSS:微軟的產品,可視化效果好但並不流行,該工具使用了悲觀鎖,一旦上鎖一個代碼文件在同一時間只能容許一名開發者操做,其餘的開發者要使用必需要等待前一個開發者使用完成解鎖後,開發效率低。

    SVN:當下最主流的集中式版本控制系統

2.2.分佈式版本控制系統

結構圖:

 

  Git就是目前世界上最早進、主流的分佈式版本控制系統。

  與集中式最大的區別:不只僅使用雲服務器託管了項目,在每一個項目人員電腦本地都存儲這一份項目倉庫。另外這樣的結構這有兩點好處:

    1.即便是託管服務器出現了各類故障,也不會形成項目文件的丟失;

    2.即便是於託管服務器斷開了鏈接,也能夠進行項目的版本控制管理。


 3. Git的基本使用

Git安裝程序

連接:https://pan.baidu.com/s/1d6S3Eoohfwpnx-jBkQyTww

提取碼:9agh

 

3.1.設置用戶名和郵箱

操做命令:

git config --global user.name "用戶名" git config --global user.email "郵箱"

 操做參考圖:

 

 另外能夠經過「當前用戶」的文件夾中,找到.gitconfig文件查看配置的用戶信息。固然也能夠直接經過編輯該文件修改用戶信息。如圖:

 

 3.2.建立初始化倉庫

  在項目目錄空白處鼠標右鍵彈出菜單列表,在其中點擊選擇「Git Bash Here」,在命令窗口輸入:git init,此時項目就經過Git創建了一個版本庫,而且項目目錄中會建立一個名稱爲「.git」的隱藏目錄。

  操做參考:

 

若是項目使用SVN進行版本控制的話,一樣也會建立一個名稱爲「.svn」的隱藏目錄,它們二者的區別:

  「.svn」目錄不會由於項目體積的增加而影響自身的體積也過大的增加,該目錄始終都屬於體積很小的目錄,由於「.svn」目錄只會記錄一些版本信息;

   「.git」的隱藏目錄則會由於隨着項目體積的增加而增加自身的體積,由於「.git」目錄至關於一個本地的代碼庫,會存儲着各個版本的源代碼信息幷包括版本信息。

 

3.3.提交文件到版本庫

3.3.1.查看項目狀態

項目經過Git創建版本庫後,能夠經過在命令行窗口輸入「git status」來查看當前項目中文件的控制狀態,操做參考如圖:

 上圖在輸入命令後,提示出當前版本庫有一個文件處於未提交的狀態。

 

3.3.2.添加操做

操做命令:git add 文件名

 操做參考圖-輸入添加命令後再查看狀態:

 經過此命令後新增的文件僅僅被添加到暫存區,實際上沒有加入到版本庫中。PS:若是須要提交全部文件,則能夠將文件名替換爲*

 

3.3.3.提交

在命令行輸入:git commit 文件名 -m 「註釋」 ,經過此命令後文件則纔會提交到版本庫中,從而才能進行版本的控制。

操做參考圖-輸入提交命令後再查看狀態:

 注意:不論是新增或是修改操做,最終都須要進行commit命令操做。

 

3.4.查看文件操做記錄

 能夠經過輸入命令:」git log --pretty=oneline 文件名」或」git log 文件名」 

 3.4.1.」git log 文件名」—操做參考圖:

 

3.4.2.操做參考圖-」git log --pretty=oneline 文件名」:

 

3.5.版本穿越

用於將當前項目回退到咱們指定的版本

 第一步,查詢獲取版本標識

 操做命令:git reflog

 

第二步,使用版本標識進行回退

操做命令:git reset --hard 版本標識

 

 

3.6.文件檢出

 用於獲取新文件或覆蓋當前工做副本

 操做命令:git checkout 文件名

 

 3.7.文件刪除

經過文件的物理刪除是沒法直接將版本庫中的文件刪掉的,須要在對版本庫執行提交命令。

第一步,物理刪除文件

第二步,執行提交命令


 4.Git文件區域

 工做區

 從版本庫檢出存儲在本地硬盤的文件區域,也叫工做副本用於咱們實際開發工做的區域;

 

本地庫

 隱藏目錄.git就是一個本地的代碼倉庫,它會存儲全部版本的文件信息,即便和代碼託管的服務器斷開也能夠經過本地庫進行版本控制,也能夠用於在代碼託管的服務器文件丟失狀況下做爲備份。

 

 暫存區

 在對文件進行修改、新增、刪除時,每每這些操做沒有實際的同步到版本庫,只是將這些操做停留在暫存區,這個時候須要commit命令才能將操做同步到版本庫。


 

後續詳見第二節.....

相關文章
相關標籤/搜索