1、Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。和集中式版本控制系統(tǒng)相比,分布式版本控制系統(tǒng)的安全性要高很多,因?yàn)槊總€人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那里復(fù)制一個就可以了。而集中式版本控制系統(tǒng)的中央服務(wù)器要是出了問題,所有人都沒法干活了。
安裝好Git后在Git CMD命令行輸入如下配置身份:
$?git?config?--global?user.name?"Your?Name" $?git?config?--global?user.email?"email@example.com"
配置完成后可以使用同樣的命令去掉名字和郵箱查看是否配置成功。
2、創(chuàng)建版本庫
在Git CMD命令行下切換到工作目錄(F:切換到F盤,跟dos一樣)
使用mkdir創(chuàng)建文件夾,cd 進(jìn)入到learngit文件夾,pwd查看當(dāng)前工作文件夾。
$?mkdir?learngit $?cd?learngit $?pwd /Users/michael/learngit
$?git?init
建倉庫。目前是一個空的倉庫(empty Git repository),細(xì)心的讀者可以發(fā)現(xiàn)當(dāng)前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄里面的文件,不然改亂了,就把Git倉庫給破壞了。
3、
touch?readme.txt
git?add?readme.txt
將readme.txt從工作區(qū)添加到版本庫暫存區(qū)。
git?status
查看當(dāng)前狀態(tài)。使用最頻繁,在修改工作區(qū)內(nèi)容后可以使用它查看。
git?commit?-m?"add?readme.txt"
提交readme.txt,-m添加對其的描述說明。
cat?readme.txt
查看文本內(nèi)容。
git?log
查看歷史記錄。
git?reflog
主要用于查看之前版本號
git?reset?--hard?c1dc335
回退到之前的版本,也可以用此命令再恢復(fù)到后面的版本。
4、撤銷修改
修改了還沒add可以使用命令撤銷這個修改
git?checkout?--?readme.txt
add了還沒commit可以用命令將暫存區(qū)的修改撤銷。再使用上一個命令就可以將文本文件修改的內(nèi)容撤銷
git?reset?HEAD?readme.txt
5、刪除與恢復(fù)
刪除已經(jīng)提交的文件。
rm?readme.txt
發(fā)現(xiàn)刪除錯誤,還可以用命令恢復(fù),此時文本還在暫存區(qū),可以恢復(fù)。
git?checkout?--?readme.txt
6、Git與GitHub
這個網(wǎng)站就是提供Git倉庫托管服務(wù)的,只要注冊一個GitHub賬號,就可以免費(fèi)獲得Git遠(yuǎn)程倉庫。
由于本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密的,所以,需要一點(diǎn)設(shè)置:
第1步:創(chuàng)建SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果已經(jīng)有了,可直接跳到下一步。如果沒有,打開Shell(Windows下打開Git
Bash),創(chuàng)建SSH Key:
ssh-keygen?-t?rsa?-C?"youremail@example.com"
把郵箱地址換成自己的地址一路回車。可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH
Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰。
第2步:登陸GitHub,打開“Account settings”,“SSH Keys”頁面:
然后,點(diǎn)“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內(nèi)容:
首先,登陸GitHub,然后,在右上角找到“Create a new repo”按鈕,創(chuàng)建一個新的倉庫:
在Repository name填入learngit,其他保持默認(rèn)設(shè)置,點(diǎn)擊“Create repository”按鈕,就成功地創(chuàng)建了一個新的Git倉庫:
目前,在GitHub上的這個learngit倉庫還是空的,GitHub告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關(guān)聯(lián),然后,把本地倉庫的內(nèi)容推送到GitHub倉庫。
現(xiàn)在,我們根據(jù)GitHub的提示,在本地的learngit倉庫下運(yùn)行命令:
$?git?remote?add?origin?git@github.com:michaelliao/learngit.git
注意,把上面的michaelliao替換成自己的GitHub賬戶名。
添加后,遠(yuǎn)程庫的名字就是origin,這是Git默認(rèn)的叫法,也可以改成別的,但是origin這個名字一看就知道是遠(yuǎn)程庫。
下一步,就可以把本地庫的所有內(nèi)容推送到遠(yuǎn)程庫上:
$?git?push?-u?origin?master Counting?objects:?19,?done. Delta?compression?using?up?to?4?threads. Compressing?objects:?100%?(19/19),?done. Writing?objects:?100%?(19/19),?13.73?KiB,?done. Total?23?(delta?6),?reused?0?(delta?0) To?git@github.com:michaelliao/learngit.git ?*?[new?branch]??????master?->?master Branch?master?set?up?to?track?remote?branch?master?from?origin.
把本地庫的內(nèi)容推送到遠(yuǎn)程,用git push命令,實(shí)際上是把當(dāng)前分支master推送到遠(yuǎn)程。
由于遠(yuǎn)程庫是空的,我們第一次推送master分支時,加上了-u參數(shù),Git不但會把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支,還會把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來,在以后的推送或者拉取時就可以簡化命令。
推送成功后,可以立刻在GitHub頁面中看到遠(yuǎn)程庫的內(nèi)容已經(jīng)和本地一模一樣:
從現(xiàn)在起,只要本地作了提交,就可以通過命令:
$?git?push?origin?master
把本地master分支的最新修改推送至GitHub,現(xiàn)在,你就擁有了真正的分布式版本庫!
SSH警告
當(dāng)你第一次使用Git的clone或者push命令連接GitHub時,會得到一個警告:
The?authenticity?of?host?'github.com?(xx.xx.xx.xx)'?can't?be?established. RSA?key?fingerprint?is?xx.xx.xx.xx.xx. Are?you?sure?you?want?to?continue?connecting?(yes/no)?
這是因?yàn)镚it使用SSH連接,而SSH連接在第一次驗(yàn)證GitHub服務(wù)器的Key時,需要你確認(rèn)GitHub的Key的指紋信息是否真的來自GitHub的服務(wù)器,輸入yes回車即可。
Git會輸出一個警告,告訴你已經(jīng)把GitHub的Key添加到本機(jī)的一個信任列表里了:
Warning:?Permanently?added?'github.com'?(RSA)?to?the?list?of?known?hosts.
這個警告只會出現(xiàn)一次,后面的操作就不會有任何警告了。
6、將遠(yuǎn)程庫GitHub上的庫克隆到本地庫(自己電腦上)
上面講了先有本地庫,后有遠(yuǎn)程庫的時候,如何關(guān)聯(lián)遠(yuǎn)程庫。
現(xiàn)在,假設(shè)我們從零開發(fā),那么最好的方式是先創(chuàng)建遠(yuǎn)程庫,然后,從遠(yuǎn)程庫克隆。
首先,登陸GitHub,創(chuàng)建一個新的倉庫,名字叫gitshills:
我們勾選Initialize this repository with a README,這樣GitHub會自動為我們創(chuàng)建一個README.md文件。創(chuàng)建完畢后,可以看到README.md文件:
現(xiàn)在,遠(yuǎn)程庫已經(jīng)準(zhǔn)備好了,下一步是用命令git clone克隆一個本地庫:
$?git?clone?git@github.com:michaelliao/gitskills.git Cloning?into?'gitskills'... remote:?Counting?objects:?3,?done. remote:?Total?3?(delta?0),?reused?0?(delta?0) Receiving?objects:?100%?(3/3),?done. $?cd?gitskills $?ls README.md
然后進(jìn)入gitshills目錄看看,已經(jīng)有README.md文件了。





