Git簡(jiǎn)介:
什么是Git?
Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。最初由Linus Torvalds編寫,用作Linux內(nèi)核代碼的管理。
SVN與Git的最主要的區(qū)別?
- SVN是集中式版本控制系統(tǒng),版本庫是集中放在中央服務(wù)器的,而干活的時(shí)候,用的都是自己的電腦,所以首先要從中央服務(wù)器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服務(wù)器。集中式版本控制系統(tǒng)是必須聯(lián)網(wǎng)才能工作,如果在局域網(wǎng)還可以,帶寬夠大,速度夠快,如果在互聯(lián)網(wǎng)下,如果網(wǎng)速慢的話,就納悶了。
- Git是分布式版本控制系統(tǒng),那么它就沒有中央服務(wù)器的,每個(gè)人的電腦就是一個(gè)完整的版本庫,這樣,工作的時(shí)候就不需要聯(lián)網(wǎng)了,因?yàn)榘姹径际窃谧约旱碾娔X上。既然每個(gè)人的電腦都有一個(gè)完整的版本庫,那多個(gè)人如何協(xié)作呢?比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時(shí),你們兩之間只需把各自的修改推送給對(duì)方,就可以互相看到對(duì)方的修改了。而且Git不僅僅是個(gè)版本控制系統(tǒng),它也是個(gè)內(nèi)容管理系統(tǒng)(CMS),工作管理系統(tǒng)等。
1、GIT把內(nèi)容按元數(shù)據(jù)方式存儲(chǔ),而SVN是按文件:所有的資源控制系統(tǒng)都是把文件的元信息隱藏在一個(gè)類似.svn,.cvs等的文件夾里。
2、GIT分支和SVN的分支不同:分支在SVN中一點(diǎn)不特別,就是版本庫中的另外的一個(gè)目錄。
3、GIT沒有一個(gè)全局的版本號(hào),而SVN有:目前為止這是跟SVN相比GIT缺少的最大的一個(gè)特征。
4、GIT的內(nèi)容完整性要優(yōu)于SVN:GIT的內(nèi)容存儲(chǔ)使用的是SHA-1哈希算法。這能確保> 代碼內(nèi)容的完整性,確保在遇到磁盤故障和網(wǎng)絡(luò)問題時(shí)降低對(duì)版本庫的破壞。
為什么學(xué)習(xí)Git?
除了你可以使用Git來管理自己的項(xiàng)目之外,還因?yàn)樵絹碓蕉嗟娜耸褂肎ithub來托管自己的開源項(xiàng)目, 你可以找到適合你的開源項(xiàng)目進(jìn)行學(xué)習(xí),加入到一個(gè)團(tuán)隊(duì)來提高自己。同時(shí)GitHub也可以幫助你找到滿意的工作!! 沒錯(cuò),可能有公司看到你托管到GitHub的項(xiàng)目而向你發(fā)出offer,在簡(jiǎn)歷中 你的GitHub 可能成為加分項(xiàng)。
Git的安裝:
最早Git是在Linux上開發(fā)的,很長一段時(shí)間內(nèi),Git也只能在Linux和Unix系統(tǒng)上跑。不過,慢慢地有人把它移植到了Windows上。現(xiàn)在,Git可以在Linux、Unix、Mac和Windows這幾大平臺(tái)上正常運(yùn)行了。
Git 各平臺(tái)安裝包下載地址為:http://git-scm.com/downloads
在Linux上安裝Git:
首先,你可以試著輸入git,看看系統(tǒng)有沒有安裝Git:
$ git
The program 'git' is currently not installed.
You can install it by typin:sudo apt-get install git```
像上面的命令,有很多Linux會(huì)友好地告訴你Git沒有安裝,還會(huì)告訴你如何安裝Git。
> Git 的工作需要調(diào)用 curl,zlib,openssl,expat,libiconv 等庫的代碼,所以需要先安裝這些依賴工具。
在有 yum 的系統(tǒng)上(比如 Fedora)或者有 apt-get 的系統(tǒng)上(比如 Debian 體系),可以用下面的命令安裝:
各 Linux 系統(tǒng)可以很簡(jiǎn)單多使用其安裝包管理工具進(jìn)行安裝:
###### Debian/Ubuntu Git 安裝命令為:
直接使用一條```sudo apt-get install git```就可以直接完成安裝,非常簡(jiǎn)單。
如果版本過老,要把命令改為```sudo apt-get install git-core```,因?yàn)橐郧坝袀€(gè)軟件也叫GIT(GNU Interactive Tools),結(jié)果Git就只能叫```git-core```
了。由于Git名氣實(shí)在太大,后來就把GNU Interactive Tools改成```gnuit```
,```git-core```正式改為```git```。
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext
libz-dev libssl-dev
$ apt-get install git-core
$ git --version
git version 1.8.1.2```
Centos/RedHat 安裝命令為:
$ yum install curl-devel expat-devel gettext-devel \
openssl-devel zlib-devel
$ yum -y install git-core
$ git --version
git version 1.7.1```
### 在Windows上安裝Git:
- Windows是最爛的開發(fā)平臺(tái),如果不是開發(fā)Windows游戲或者在IE里調(diào)試頁面,一般不推薦用Windows。不過微軟也是有辦法安裝Git的,Windows下要使用很多Linux/Unix的工具時(shí),需要***Cygwin***這樣的模擬環(huán)境,Git也一樣。***Cygwin***的安裝和配置都比較復(fù)雜,最好不要折騰了。有大神已經(jīng)把模擬環(huán)境和Git都打包好了,名叫**msysgit**,只需要下載一個(gè)單獨(dú)的exe安裝程序,其他什么也不用裝,絕對(duì)好用。
- ***msysgit***其實(shí)就是Windows版的Git,從[https://git-for-windows.github.io](https://git-for-windows.github.io/)下載,然后按默認(rèn)選項(xiàng)安裝即可。安裝完成后,就可以使用命令行的 git 工具(已經(jīng)自帶了 **ssh** 客戶端)了,另外還有一個(gè)圖形界面的 Git 項(xiàng)目管理工具。
- 在開始菜單里找到"Git"->"Git Bash",或桌面鼠標(biāo)右鍵找到“Git Bash Here”,蹦出一個(gè)類似命令行窗口的東西,就說明Git安裝成功!
### Mac 平臺(tái)上安裝:
在 Mac 平臺(tái)上安裝 Git 最容易的當(dāng)屬使用圖形化的 Git 安裝工具,下載地址為:
[http://sourceforge.net/projects/git-osx-installer/](http://sourceforge.net/projects/git-osx-installer/)
安裝界面如下所示:

## Git的配置
Git 提供了一個(gè)叫做 git config 的工具,專門用來配置或讀取相應(yīng)的工作環(huán)境變量。
這些環(huán)境變量,決定了 Git 在各個(gè)環(huán)節(jié)的具體工作方式和行為。這些變量可以存放在以下三個(gè)不同的地方:
> - /etc/gitconfig文件:系統(tǒng)中對(duì)所有用戶都普遍適用的配置。若使用 git config時(shí)用 --system選項(xiàng),讀寫的就是這個(gè)文件。
- ~/.gitconfig文件:用戶目錄下的配置文件只適用于該用戶。若使用 git config
時(shí)用 --global選項(xiàng),讀寫的就是這個(gè)文件。
- 當(dāng)前項(xiàng)目的 Git 目錄中的配置文件(也就是工作目錄中的 .git/config文件):這里的配置僅僅針對(duì)當(dāng)前項(xiàng)目有效。每一個(gè)級(jí)別的配置都會(huì)覆蓋上層的相同配置所以 .git/config里的配置會(huì)覆蓋 /etc/gitconfig中的同名變量。
在 Windows 系統(tǒng)上,Git 會(huì)找尋用戶主目錄下的 .gitconfig 文件。主目錄即 $HOME 變量指定的目錄,一般都是 C:\Documents and Settings\$USER。
此外,Git 還會(huì)嘗試找尋 /etc/gitconfig 文件,只不過看當(dāng)初 Git 裝在什么目錄,就以此作為根目錄來定位。
##### 用戶信息
配置個(gè)人的用戶名稱和電子郵件地址: 因?yàn)镚it是分布式版本控制系統(tǒng),所以需要填寫用戶名和郵箱作為一個(gè)標(biāo)識(shí),你的名字與Email會(huì)出現(xiàn)在你的提交記錄中。
$ git config --global user.name "你的github用戶名"
$ git config --global user.email "你的github注冊(cè)郵箱"```
注意:
- git config使用--system參數(shù)時(shí), Git 會(huì)讀寫/etc/gitconfig文件,該文件含有對(duì)系統(tǒng)上所有用戶及他們所擁有的倉庫都生效的配置值
- git config使用--global參數(shù)時(shí),用了這個(gè)參數(shù),表示你這臺(tái)機(jī)器上所有的Git倉庫都會(huì)使用這個(gè)配置. 那么更改的配置文件就是位于該用戶主目錄下的那個(gè),以后你所有的項(xiàng)目都會(huì)默認(rèn)使用這里配置的用戶信息。Git 會(huì)讀寫~/.gitconfig文件,該文件含有只適用于該用戶的配置值.
- 如果要在某個(gè)特定的項(xiàng)目中使用其他名字或者電郵,只要去掉 --global 選項(xiàng)重新配置即可,新的設(shè)定保存在當(dāng)前項(xiàng)目的.git/config 文件里。
- git config使用--local參數(shù)時(shí), Git 會(huì)讀寫由用戶定義的各個(gè)庫中Git 目錄下的配置文件(.git/config),該文件含有只適用于該Git庫的配置值。
以上闡述的三層配置從一般到特殊層層推進(jìn),如果定義的值有沖突,以后面層中定義的為準(zhǔn),例如:在.git/config和/etc/gitconfig有沖突會(huì)采用.git/config值
文本編輯器
設(shè)置Git默認(rèn)使用的文本編輯器, 一般可能會(huì)是 Vi 或者 Vim。如果你喜歡使用Emacs 的話,可以重新設(shè)置:$ git config --global core.editor emacs
差異分析工具
還有一個(gè)比較常用的是,在解決合并沖突時(shí)使用哪種差異分析工具。比如要改用 vimdiff 的話:
$ git config --global merge.tool vimdiff
Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的輸出信息。當(dāng)然,自己也可以指定使用自己開發(fā)的工具。
查看配置信息
要檢查已有的配置信息,可以使用git config --list
命令:
$ git config --list
http.postbuffer=2M
user.name=ScorpioZoes
user.email=ScorpioZoes@test.com```
有時(shí)候會(huì)看到重復(fù)的變量名,那就說明它們來自不同的配置文件(比如 /etc/gitconfig 和 ~/.gitconfig),不過最終 Git 實(shí)際采用的是最后一個(gè)。
這些配置我們也可以在 **~/.gitconfig** 或 **/etc/gitconfig** 看到,如下所示:
`vim ~/.gitconfig`
顯示內(nèi)容如下所示:
[http]
postBuffer = 2M
[user]
user.name=WakingScorpio
user.email=WakingScorpio@test.com```
也可以直接查閱某個(gè)環(huán)境變量的設(shè)定,只要把特定的名字跟在后面即可,像這樣:
$ git config user.name
WakingScorpio```