02、工具篇--Git版本控制
Git詳解
目前市面上的版本控制工具,主要為集中式的版本控制和分散式的版本控制工具兩種。
Git概述
集中式版本控制
集中式的版本控制以SVN為代表,它有一箇中央伺服器控制所有的版本管理,其他所有的終端可以對這個中央庫進行操作,中央庫保證版本的唯一性。
這樣的方式具備一定的風險,如果中央伺服器被毀壞,所有的專案版本控制就完蛋,而且終端不論是提交修改還是獲取更新都需要不斷與伺服器進行通訊,一旦網路出現故障,一切都很難再繼續操作。
因此,集中式的版本控制工具的劣勢如下:
- 容災性差
- 通訊頻繁
分散式版本控制
分散式版本控制的典型就是Git,它跟集中式版本控制最大的區別就是它的終端可以獲取到中央伺服器的完整資訊,就好像製作了一個完整的映象。
獲取各種資訊都發生在本地,不需要和伺服器進行通訊。即使伺服器出現故障或被毀,各個終端在本地依然存在完整的備份。
Git核心思想
Git作為分散式的版本控制工具,其核心在於以下幾個方面:
分散式:各個Repo都具有完整的映象,協作中通常會有一臺中心伺服器,但分散式的思想是Git的重要概念。
快照:Git每次記錄的都是完整的Repo資訊,不是每個版本之間的差異,這也是Git速度快的原因之一。
狀態區:只有掌握了不同狀態區中的狀態,才能真正瞭解Git的核心思想。
分支:分支是Git重要的功能之一,利用好分支可以讓Git的使用如虎添翼。
Git基本配置
我們在下載和安裝好Git後,可以在終端中檢視Git的版本資訊:
git --version
如果之前使用過Git,可以通過如下命令檢視當前Git的配置資訊:
git config --list
效果如下圖所示:
配置引數的時候可以指定一個配置進行引數設定或者多個引數同時設定:
git config --global --add user.name xxx user.email [email protected]
與Linux設計思想一樣,Git也是把所有的配置都儲存為檔案,在Git專案中的.git隱藏資料夾的config檔案中。
[core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [submodule] active = . [remote "origin"] url = https://gitee.com/xxxx/xxxx.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master
這裡儲存了Git專案的所有配置資訊,而個人相關的配置資訊都儲存在個人配置中。
配置別名Alias
開發者可以根據自己的開發習慣來給一些指令起一個簡稱或別名以取代原本比較複雜的指令。
git config --global alias.st status
通過上述的配置就可以使用st來取代status指令。
倉庫初始化
版本控制就是為了管理程式碼,程式碼要放在倉庫(Repo)中。在Git中建立倉庫有兩種方式:
一種是自己建立一個倉庫。
一種是建立另一個倉庫的clone。
Git init
通過Git init指令可以把一個目錄快速設定成Git的程式碼倉庫:
git init
通過上面的指令可以把普通檔案目錄設定成Git程式碼倉庫。在建立成功後,會在該目錄下生成.git隱藏資料夾。
Git clone
Git clone用於clone一個遠端倉庫到本地,命令如下所示:
git clone http://www.xxx.org/pub/xxx/git/git.git
Git命令
Git包含很多操作的命令,主要有增加、刪除、提交、分支管理、標籤、資訊檢視、遠端同步以及撤銷等。
Git的所有命令可以參考上圖,下面列出Git常用命令速查表:
多使用,多練習自然能慢慢的記住,唯手熟爾。(反正我是記不住^_^)