不少人都知道,Linus在1991年建立了開源的Linux,今後,Linux系統不斷髮展,已經成爲最大的服務器系統軟件了。git
Linus雖然建立了Linux,但Linux的壯大是靠全世界熱心的志願者參與的,這麼多人在世界各地爲Linux編寫代碼,那Linux的代碼是如何管理的呢?vim
事實是,在2002年之前,世界各地的志願者把源代碼文件經過diff的方式發給Linus,而後由Linus本人經過手工方式合併代碼!服務器
你也許會想,爲何Linus不把Linux代碼放到版本控制系統裏呢?不是有CVS、SVN這些免費的版本控制系統嗎?由於Linus堅決地反對CVS和SVN,這些集中式的版本控制系統不但速度慢,並且必須聯網才能使用。有一些商用的版本控制系統,雖然比CVS、SVN好用,但那是付費的,和Linux的開源精神不符。curl
不過,到了2002年,Linux系統已經發展了十年了,代碼庫之大讓Linus很難繼續經過手工方式管理了,社區的弟兄們也對這種方式表達了強烈不滿,因而Linus選擇了一個商業的版本控制系統BitKeeper,BitKeeper的東家BitMover公司出於人道主義精神,受權Linux社區無償使用這個版本控制系統。編輯器
安定團結的大好局面在2005年就被打破了,緣由是Linux社區牛人彙集,難免沾染了一些梁山好漢的江湖習氣。開發Samba的Andrew試圖破解BitKeeper的協議(這麼幹的其實也不僅他一個),被BitMover公司發現了(監控工做作得不錯!),因而BitMover公司怒了,要收回Linux社區的無償使用權。分佈式
Linus能夠向BitMover公司道個歉,保證之後嚴格管教弟兄們,嗯,這是不可能的。實際狀況是這樣的:工具
Linus花了兩週時間本身用C寫了一個分佈式版本控制系統,這就是Git!一個月以內,Linux系統的源碼已經由Git管理了!牛是怎麼定義的呢?你們能夠體會一下。網站
Git迅速成爲最流行的分佈式版本控制系統,尤爲是2008年,GitHub網站上線了,它爲開源項目免費提供Git存儲,無數開源項目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。url
歷史就是這麼偶然,若是不是當年BitMover公司威脅Linux社區,可能如今咱們就沒有免費而超級好用的Git了。spa
(以上摘自雪峯老師官網)
Git制定初期目標:
版本控制(VCS)是一種記錄一個或若干文件內容變化,以便未來查閱特定版本修訂狀況的系統。
1.爲了讓不一樣系統上的開發者協同工做,集中化版本控制系統(CVCS)應運而生,如CVS,SVN及Perforce等。CVCS都有一個單一的集中管理服務器,保存全部文件的修訂版本,協同工做的人員經過客戶端鏈接到中央服務器,取出最新的文件或者提交更新。管理員經過權限的控制,掌控每位工做人員對文件的操做。
可是,單一的中央服務器有很大的隱患。服務器的宕機形成在此時間段內,文件沒法提交及更新,沒法協調工做;服務器磁盤發生故障,若是沒有備份,會形成數據丟失,嚴重的丟失整個項目的歷史更新記錄。雖然可使用某一看客戶端的文件做爲恢復數據的基礎,但仍不能保證該文件數據的完整性。
2.爲了下降CVCS帶來的弊端,分佈式版本控制系統(DVCS)面世,如Git,Mercurial,Bazaar及Darcs等。DVCS將文件倉庫完整的clone下來,保證每一個客戶端的文件都是最新的且每一個客戶端都是一個獨立的倉庫,DVCS有一個名義上的中央服務器,它最大的做用是做爲各客戶端文件的交換地,更便於各客戶端之間文件的交換及更新,若是沒有此中央服務器,各客戶端文件的交換太繁瑣,但並不像CVCS那般屬於真正意義上的中央服務器。
Git的工做須要調用curl、zlib、openssl、expat、libiconv等庫的代碼,因此須要事先安裝這些依賴工具。
查看系統git版本,並移除:
$ git --version
git version x.x.x.x
yum remove git ##移除原來的版本
1).Debian/Ubuntu
安裝命令:
$ apt-get install libcur14-gnutls-dev libexpat1-dev gettext \
libz-dev libssl-dev
$ apt-get install git-core
查看git安裝的版本
$ git --version
git version x.x.x.x(版本號)
2).Centos/RedHat
$ yum install curl-devel expat-devel gettext-devel \
openssl-devel zlib-devel
$ yum -y install git-core
查看git安裝的版本
$ git --version
git version 2.18.0-rc2
從源碼安裝能夠保證安裝到最新版本,或者是本身想用的版本,沒必要侷限於系統。
安裝依賴工具:如上 1). 和 2).
從Git官方站點下載最新版本的源碼:http://git-scm.com/download
編譯安裝:
$ tar -zxf git-x.x.x.x.tar.gz
$ cd git-x.x.x.x
$ make perfix=/usr/local all
$ sudo make prefix=/usr/local install
------------------------------------------------------------------------------------------------------------>
git命令加入環境變量
echo "export PATH=$path:/usr/git/bin" >> /etc/profile
source /etc/profile
使用git-config命令,對git作出一些設置。
git config --system 讀寫/etc/gitconfig文件:對系統中全部用戶都廣泛適用的配置。
git config --global 讀寫~/.gitconfig文件:針對於用戶目錄下的配置文件。
當前項目的配置.git/config文件,僅僅對當前項目有效。每個級別的配置都會覆蓋上層的配置。
1.用戶信息
配置我的的用戶名和電子郵箱,每次git提交時都會引用這兩條信息,說明是誰提交,歸入歷史記錄。
$ git config --global user.name "XXX"
$ git config --global user.email xxx@xxx.com
2.文本編輯器
除了系統默認的編輯器,還可按自身偏好,設置git的文本編輯器
$ git config --global core.editor emacs
3.差別分析工具
解決衝突時使用的差別分析工具的設置。
$ git config --global merge.tool vimdiff
(kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,opendiff,還支持本身開發的工具)
------------------------------------------------------------------------------------------------------------>
查看配置信息
$ git config --list
針對重複的變量名,說明改配置來自不一樣的配置文件,系統的或用戶的或本項目的,這種狀況,Git採用的是最後一個配置,即以上提到的每個級別的配置都會覆蓋上層的配置。
還能夠查閱特定的變量值:
$ git config user.name
(未完待續)