git教程01——windows系統(tǒng)下教科書(shū)式安裝git
git教程03——遠(yuǎn)程倉(cāng)庫(kù)
git教程04——2種方法將本地代碼提交到github上
git教程05——克隆github上的代碼到本地
配置用戶名和郵箱
初次安裝git帜平,需要配置用戶名和郵箱偎窘,否則當(dāng)你提交到github時(shí)候誓禁,會(huì)出現(xiàn)提示:please tell me who you are.因?yàn)镚it是分布式版本控制系統(tǒng)广恢,所以需要填寫(xiě)用戶名和郵箱作為一個(gè)標(biāo)識(shí)。你需要運(yùn)行命令來(lái)配置你的用戶名和郵箱:
$ git config --global user.name "your username" //回車
$ git config --global user.email "your email" //回車
注意:(引號(hào)內(nèi)請(qǐng)輸入你自己設(shè)置的名字和郵箱)此用戶名和郵箱是git提交代碼時(shí)用來(lái)顯示你身份和聯(lián)系方式的,并不是github用戶名和郵箱
有了這個(gè)參數(shù),表示你這臺(tái)機(jī)器上所有的Git倉(cāng)庫(kù)都會(huì)使用這個(gè)配置拱镐,當(dāng)然你也可以對(duì)某個(gè)倉(cāng)庫(kù)指定的不同的用戶名和郵箱。
創(chuàng)建版本庫(kù)
版本庫(kù)又名倉(cāng)庫(kù)持际,英文名repository沃琅,我們可以就簡(jiǎn)單的理解為一個(gè)目錄,這個(gè)目錄里面所有的文件都可以被git管理起來(lái)蜘欲,每個(gè)文件的修改益眉,刪除git都能跟蹤,以便任何時(shí)刻都可以追蹤歷史芒填,或者在將來(lái)某個(gè)時(shí)刻還可以將文件”還原”呜叫。
接下來(lái)創(chuàng)建一個(gè)倉(cāng)庫(kù):
pwd 命令是用于顯示當(dāng)前的目錄
1)通過(guò)命令 git init 把這個(gè)目錄變成git可以管理的倉(cāng)庫(kù),如下:
git init
這時(shí)候你當(dāng)前testgit目錄下會(huì)多了一個(gè).git的目錄殿衰,這個(gè)目錄是Git來(lái)跟蹤管理版本的朱庆,沒(méi)事千萬(wàn)不要手動(dòng)亂改這個(gè)目錄里面的文件,否則闷祥,會(huì)把git倉(cāng)庫(kù)給破壞了娱颊。如下:
2)把文件添加到版本庫(kù)中:
首先要明確下傲诵,所有的版本控制系統(tǒng),只能跟蹤文本文件的改動(dòng)箱硕,比如txt文件拴竹,網(wǎng)頁(yè),所有程序的代碼等剧罩,Git也不列外栓拜,版本控制系統(tǒng)可以告訴你每次的改動(dòng),但是圖片惠昔,視頻這些二進(jìn)制文件幕与,雖能也能由版本控制系統(tǒng)管理,但沒(méi)法跟蹤文件的變化镇防,只能把二進(jìn)制文件每次改動(dòng)串起來(lái)啦鸣,也就是知道圖片從1kb變成2kb,但是到底改了啥来氧,版本控制也不知道诫给。
下面先看下demo如下演示:
我們?cè)诎姹編?kù)testgit目錄下新建一個(gè)記事本test.txt文件,內(nèi)容是:hello world啦扬!
第一步:使用命令 git add test.txt添加到暫存區(qū)里面去中狂。如下:
git add 你的文件 //把文件添加到倉(cāng)庫(kù)
如果沒(méi)有任何提示,說(shuō)明已經(jīng)添加成功了扑毡。
第二步:用命令git commit告訴Git吃型,把文件提交到倉(cāng)庫(kù)。
git commit -m '描述你提交了什么內(nèi)容' //把文件提交到倉(cāng)庫(kù)
這里解釋下git commit命令僚楞,-m后面輸入的是本次提交的說(shuō)明,可以輸入任意內(nèi)容枉层,當(dāng)然最好是有意義的泉褐。當(dāng)git commit命令執(zhí)行成功后會(huì)告訴你:
1 file changed:1個(gè)文件被改動(dòng)(我們新添加的test.txt文件);
1 insertion(+):插入了一行內(nèi)容(test.txt有兩行內(nèi)容)鸟蜡。
現(xiàn)在我們已經(jīng)提交了一個(gè)test.txt文件了膜赃,我們下面可以通過(guò)命令git status來(lái)查看是否還有文件未提交,如下:
git status//檢查狀態(tài)
說(shuō)明沒(méi)有任何文件未提交揉忘,但是我現(xiàn)在繼續(xù)來(lái)改下test.txt內(nèi)容跳座,比如我在下面添加一行hello cat內(nèi)容,繼續(xù)使用git status來(lái)查看下結(jié)果泣矛,如下:
上面的命令告訴我們 test.txt文件已被修改疲眷,但是有未被提交的修改。
接下來(lái)我想看下test.txt文件到底改了什么內(nèi)容您朽,如何查看呢狂丝?可以使用如下命令:
git diff test.txt 如下:
git diff 你的文件
如上可以看到,test.txt文件內(nèi)容從一行hello world!改成 二行 添加了一行hello cat內(nèi)容几颜。
知道了對(duì)test.txt文件做了什么修改后倍试,我們可以放心的提交到倉(cāng)庫(kù)了,提交修改和提交文件是一樣的2步(第一步是git add 第二步是:git commit)蛋哭。
3.版本回退:
如上县习,我們已經(jīng)學(xué)會(huì)了修改文件,現(xiàn)在我繼續(xù)對(duì)test.txt文件進(jìn)行修改谆趾,再增加一行內(nèi)容為hello dog繼續(xù)執(zhí)行命令如下:
現(xiàn)在我們已經(jīng)對(duì)test.txt文件做了三次修改了躁愿,那么我現(xiàn)在想查看下歷史記錄,如何查呢棺妓?我們現(xiàn)在可以使用命令 git log 演示如下所示:
git log //查看歷史記錄
git log命令顯示從最近到最遠(yuǎn)的顯示日志攘已,我們可以看到最近三次提交,最近的一次是,增加內(nèi)容為hello dog.第一次默認(rèn)是 hello world!.如果嫌上面顯示的信息太多的話怜跑,我們可以使用命令 git log –pretty=oneline 演示如下:
git log –pretty=oneline
現(xiàn)在我想使用版本回退操作样勃,我想把當(dāng)前的版本回退到上一個(gè)版本,可以使用如下2種命令:
①git reset --hard HEAD^ 性芬,那么如果要回退到上上個(gè)版本只需把HEAD^改成 HEAD^^ 以此類推峡眶,那如果要回退到前100個(gè)版本的話,使用上面的方法肯定不方便植锉,我們可以使用下面的簡(jiǎn)便命令操作:git reset --hard HEAD~100 即可辫樱。未回退之前的test.txt內(nèi)容如下:
git reset --hard HEAD^ //回退到上個(gè)版本;適用于版本少的
git reset --hard HEAD~100 //回退到前100個(gè)版本
再來(lái)查看下 test.txt內(nèi)容如下:通過(guò)命令cat test.txt查看
cat 你的文件
可以看到俊庇,內(nèi)容已經(jīng)回退到上一個(gè)版本了狮暑。我們可以繼續(xù)使用git log 來(lái)查看下歷史記錄信息,如下:
我們看到 增加hello dog內(nèi)容我們沒(méi)有看到了辉饱,但是現(xiàn)在我想回退到最新的版本搬男,如:有hello dog的內(nèi)容要如何恢復(fù)呢?我們可以通過(guò)版本號(hào)回退彭沼,使用命令方法如下:
git reset --hard 版本號(hào) 缔逛,但是現(xiàn)在的問(wèn)題假如我已經(jīng)關(guān)掉過(guò)一次命令行或者h(yuǎn)ello dog內(nèi)容的版本號(hào)我并不知道呢?要如何知道增加hello dog內(nèi)容的版本號(hào)呢姓惑?可以通過(guò)如下命令即可獲取到版本號(hào):git reflog 演示如下:
git reflog //獲取到版本號(hào)
通過(guò)上面的顯示我們可以知道褐奴,增加內(nèi)容hello dog的版本號(hào)是 700cc53.我們現(xiàn)在可以命令
git reset --hard 700cc53 來(lái)恢復(fù)了。演示如下:
git reset --hard 你要恢復(fù)內(nèi)容的版本號(hào)
可以看到 目前已經(jīng)是最新的版本了于毙。
4.理解工作區(qū)與暫存區(qū)的區(qū)別敦冬?
工作區(qū):就是你在電腦上看到的目錄,比如目錄下testgit里的文件(.git隱藏目錄版本庫(kù)除外)唯沮》瞬梗或者以后需要再新建的目錄文件等等都屬于工作區(qū)范疇伞辛。
版本庫(kù)(Repository):工作區(qū)有一個(gè)隱藏目錄.git,這個(gè)不屬于工作區(qū),這是版本庫(kù)夯缺。其中版本庫(kù)里面存了很多東西蚤氏,其中最重要的就是stage(暫存區(qū)),還有Git為我們自動(dòng)創(chuàng)建了第一個(gè)分支master,以及指向master的一個(gè)指針HEAD踊兜。
我們前面說(shuō)過(guò)使用Git提交文件到版本庫(kù)有兩步:
第一步:是使用 git add 把文件添加進(jìn)去竿滨,實(shí)際上就是把文件添加到暫存區(qū)。
第二步:使用git commit提交更改捏境,實(shí)際上就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支上于游。
我們繼續(xù)使用demo來(lái)演示下:
我們?cè)趖est.txt再添加一行內(nèi)容為hello pig,接著在目錄下新建一個(gè)文件為test.txt 內(nèi)容為test垫言,我們先用命令 git status來(lái)查看下?tīng)顟B(tài)贰剥,如下:
現(xiàn)在我們先使用git add 命令把2個(gè)文件都添加到暫存區(qū)中,再使用git status來(lái)查看下?tīng)顟B(tài)筷频,如下:
著我們可以使用git commit一次性提交到分支上蚌成,如下:
5.git撤銷修改和刪除文件操作。
①撤銷修改:
比如我現(xiàn)在在test.txt文件里面增加一行 內(nèi)容為hello rabbit凛捏,我們先通過(guò)命令查看如下:
在我未提交之前担忧,我發(fā)現(xiàn)添加hello rabbit內(nèi)容有誤,所以我得馬上恢復(fù)以前的版本坯癣,現(xiàn)在我可以有如下幾種方法可以做修改:
第一:如果我知道要?jiǎng)h掉那些內(nèi)容的話瓶盛,直接手動(dòng)更改去掉那些需要的文件,然后add添加到暫存區(qū)示罗,最后commit掉
第二:我可以按以前的方法直接恢復(fù)到上一個(gè)版本惩猫。使用 git reset --hard HEAD^
但是現(xiàn)在我不想使用上面的2種方法,我想直接想使用撤銷命令該如何操作呢蚜点?首先在做撤銷之前帆锋,我們可以先用 git status 查看下當(dāng)前的狀態(tài)。如下所示:
可以發(fā)現(xiàn)禽额,Git會(huì)告訴你,git checkout -- file 可以丟棄工作區(qū)的修改皮官,如下命令:
git checkout -- 你的文件
命令 git checkout --test.txt意思就是脯倒,把test.txt文件在工作區(qū)做的修改全部撤銷,這里有2種情況捺氢,如下:
test.txt自動(dòng)修改后藻丢,還沒(méi)有放到暫存區(qū),使用 撤銷修改就回到和版本庫(kù)一模一樣的狀態(tài)摄乒。
另外一種是test.txt已經(jīng)放入暫存區(qū)了悠反,接著又作了修改残黑,撤銷修改就回到添加暫存區(qū)后的狀態(tài)。
對(duì)于第二種情況斋否,我想我們繼續(xù)做demo來(lái)看下梨水,假如現(xiàn)在我對(duì)test.txt添加一行 內(nèi)容為hello tiger,我git add增加到暫存區(qū)后茵臭,接著添加內(nèi)容hello dragon疫诽,我想通過(guò)撤銷命令讓其回到暫存區(qū)后的狀態(tài)。如下所示:
注意:命令git checkout -- test.txt 中的 -- 很重要旦委,如果沒(méi)有 -- 的話奇徒,那么命令變成創(chuàng)建分支了。
②刪除文件缨硝。
假如我現(xiàn)在版本庫(kù)testgit目錄新建一個(gè)b.txt文件摩钙,然后用命令add,最后提交查辩,如下:
rm 你的文件 //刪除
如上:一般情況下胖笛,可以直接在文件目錄中把文件刪了,或者使用如上rm命令:rm b.txt 宜肉,如果我想徹底從版本庫(kù)中刪掉了此文件的話匀钧,可以再執(zhí)行commit命令 提交掉,現(xiàn)在目錄是這樣的谬返,
只要沒(méi)有commit之前之斯,如果我想在版本庫(kù)中恢復(fù)此文件,按如下操作:
可以使用如下命令 git checkout -- b.txt遣铝,如下所示:
再來(lái)看看我們testgit目錄佑刷,把之前刪掉的文件又恢復(fù)了:
好了,git基本操作命令到此為止酿炸,另外提供一個(gè)學(xué)習(xí)git的網(wǎng)址瘫絮,點(diǎn)我