Git簡(jiǎn)介
Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)胸囱。為何版本控制系統(tǒng)洽瞬?就是可以記錄一款添加和更改源代碼的過程,回滾到特定的階段操漠,可以恢復(fù)誤刪除文件等功能收津。
集中式vs分布式
- 集中式
以svn為代表的就是集中式版本控制系統(tǒng),集中式將所有數(shù)據(jù)集中存放在服務(wù)器當(dāng)中,因此只有一個(gè)倉(cāng)庫撞秋,也什么叫做集中式的长捧,它的優(yōu)點(diǎn)是將所有代碼放在服務(wù)器當(dāng)中,便于管理吻贿,缺點(diǎn)是一旦開發(fā)者所有的環(huán)境不能連接服務(wù)器串结,就無法獲取最新的源代碼,開發(fā)也無法進(jìn)行舅列,服務(wù)器宕機(jī)時(shí)也是同樣的道理肌割,而且萬一服務(wù)器數(shù)據(jù)不見了,那就再也找不到最新的代碼剧蹂。
- 分布式
以git為代表的就是分布式版本控制系統(tǒng)声功。分布式版本控制系統(tǒng)沒有“中央服務(wù)器”烦却,每個(gè)人的電腦上都是一個(gè)完整的版本庫宠叼,這樣,你工作的時(shí)候其爵,就不需要聯(lián)網(wǎng)了冒冬,因?yàn)榘姹編炀驮谀阕约旱碾娔X上。既然每個(gè)人電腦上都有一個(gè)完整的版本庫摩渺,那多個(gè)人如何協(xié)作呢简烤?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A摇幻,這時(shí)横侦,你們倆之間只需把各自的修改推送給對(duì)方,就可以互相看到對(duì)方的修改了绰姻。和集中式版本控制系統(tǒng)相比枉侧,分布式版本控制系統(tǒng)的安全性要高很多,因?yàn)槊總€(gè)人電腦里都有完整的版本庫狂芋,某一個(gè)人的電腦壞掉了不要緊榨馁,隨便從其他人那里復(fù)制一個(gè)就可以了。而集中式版本控制系統(tǒng)的中央服務(wù)器要是出了問題帜矾,所有人都沒法干活了翼虫。
在實(shí)際使用分布式版本控制系統(tǒng)的時(shí)候,其實(shí)很少在兩人之間的電腦上推送版本庫的修改屡萤,因?yàn)榭赡苣銈儌z不在一個(gè)局域網(wǎng)內(nèi)珍剑,兩臺(tái)電腦互相訪問不了,也可能今天你的同事病了死陆,他的電腦壓根沒有開機(jī)次慢。因此,分布式版本控制系統(tǒng)通常也有一臺(tái)充當(dāng)“中央服務(wù)器”的電腦,但這個(gè)服務(wù)器的作用僅僅是用來方便“交換”大家的修改迫像,沒有它大家也一樣干活劈愚,只是交換修改不方便而已。
git的優(yōu)勢(shì)遠(yuǎn)遠(yuǎn)沒那么簡(jiǎn)單闻妓,還有強(qiáng)大的分支功能菌羽,而且git是github的核心,作為偉大的開源倉(cāng)庫由缆,學(xué)好git才能更好的操作github注祖。
git安裝
- 在Linux上安裝Git
首先,先輸入git
,看看有沒有安裝:
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
像上面的命令均唉,有很多Linux會(huì)友好地告訴你Git沒有安裝是晨,還會(huì)告訴你如何安裝Git顽分。
如果你用的是Debian或Ubuntu Linux染突,輸入sudo apt-get install git
就可以完成git的安裝怕犁。
- 在Windows上安裝Git
Windows下要使用很多Linux/Unix的工具時(shí)句葵,需要Cygwin這樣的模擬環(huán)境检盼,Git也一樣瓜饥。Cygwin的安裝和配置都比較復(fù)雜诊笤,就不建議你折騰了嫡锌。不過镜会,有高人已經(jīng)把模擬環(huán)境和Git都打包好了檬寂,名叫msysgit,只需要下載一個(gè)單獨(dú)的exe安裝程序戳表,其他什么也不用裝桶至,絕對(duì)好用。msysgit是Windows版的Git從https://git-for-windows.github.io下載(網(wǎng)速慢的同學(xué)請(qǐng)移步國(guó)內(nèi)鏡像)匾旭,然后按默認(rèn)選項(xiàng)安裝即可镣屹。安裝完成之后,在開始菜單里找到“Git”->“Git Bash”季率,蹦出一個(gè)類似命令行窗口的東西野瘦,就說明Git安裝成功!
git初始設(shè)置
- 設(shè)置姓名(請(qǐng)用英文輸入)和郵箱地址
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"