一凛虽、如何操作?
1.創(chuàng)建版本庫
什么是版本庫鞠眉?版本庫又名倉庫薯鼠,英文名repository,你可以簡單的理解一個目錄,這個目錄里面的所有文件都可以被Git管理起來械蹋,每個文件的修改出皇,刪除,Git都能跟蹤哗戈,以便任何時刻都可以追蹤歷史郊艘,或者在將來某個時刻還可以將文件”還原”。
所以創(chuàng)建一個版本庫也非常簡單唯咬,如下我是E盤 –> qdtest下 目錄下新建一個testgit版本庫纱注。
pwd 命令是用于顯示當前的目錄。
通過命令 git init 把這個目錄變成git可以管理的倉庫胆胰,如下:
這時候你當前testgit目錄下會多了一個.git的目錄狞贱,這個目錄是Git來跟蹤管理版本的,沒事千萬不要手動亂改這個目錄里面的文件煮剧,否則斥滤,會把git倉庫給破壞了。如下:
在版本庫testgit目錄下新建一個記事本文件 readme.txt 內(nèi)容如下:22222222
第一步:使用命令 git add readme.txt添加到暫存區(qū)里面去勉盅。
第二步:用命令 git commit告訴Git佑颇,把文件提交到倉庫。
在提交完readme.txt文件之后草娜,使用git status查看是否還有未提交的文件:
說明沒有要提交的文件挑胸,現(xiàn)在在readme.txt文件中增加一行“33333333”之后,再使用git status查看:
上面的命令告訴我們 readme.txt文件已被修改宰闰,但是未被提交的修改茬贵。
接下來想看看readme.txt中到底改動了什么內(nèi)容:
從圖中可以看出添加了一行33333333
提交修改和提交文件是一樣的2步(第一步是git add 第二步是:git commit)。
2.版本回退
目前我們隊readme.txt進行了兩次修改移袍,可以使用git log來查看歷史記錄:
git log命令顯示從最近到最遠的顯示日志解藻,如果嫌顯示的信息太多的話,我們可以使用git log -pretty=oneline:
現(xiàn)在我想使用版本回退操作葡盗,我想把當前的版本回退到上一個版本螟左,要使用什么命令呢?可以使用如下2種命令觅够,第一種是:git reset --hard HEAD^ 那么如果要回退到上上個版本只需把HEAD^ 改成 HEAD^^ 以此類推胶背。那如果要回退到前100個版本的話,使用上面的方法肯定不方便喘先,我們可以使用下面的簡便命令操作:git reset --hard HEAD~100 即可钳吟。
回退到上一個版本的操作:
查看一下readme.txt內(nèi)容:
可以看到,內(nèi)容已經(jīng)回退到上一個版本了窘拯。我們可以繼續(xù)使用git log 來查看下歷史記錄信息:
如果我們想回退到最新的版本红且,我們可以通過版本號回退坝茎,使用命令方法如下:
git reset --hard 版本號 ,但是現(xiàn)在的問題假如我已經(jīng)關(guān)掉過一次命令行或者33333333內(nèi)容的版本號我并不知道呢暇番?要如何知道增加33333333內(nèi)容的版本號呢景东?可以通過如下命令即可獲取到版本號:git reflog
通過上面的顯示我們可以知道,增加內(nèi)容33333333的版本號是d498580 .我們現(xiàn)在可以命令
git reset --hard d498580來恢復(fù)了:
現(xiàn)在又恢復(fù)到最新的版本了奔誓。
3.理解工作區(qū)與暫存區(qū)的區(qū)別斤吐?
工作區(qū):就是你在電腦上看到的目錄,比如目錄下testgit里的文件(.git隱藏目錄版本庫除外)厨喂『痛耄或者以后需要再新建的目錄文件等等都屬于工作區(qū)范疇。
版本庫(Repository):工作區(qū)有一個隱藏目錄.git,這個不屬于工作區(qū)蜕煌,這是版本庫派阱。其中版本庫里面存了很多東西,其中最重要的就是stage(暫存區(qū))斜纪,還有Git為我們自動創(chuàng)建了第一個分支master,以及指向master的一個指針HEAD贫母。
我們前面說過使用Git提交文件到版本庫有兩步:
第一步:是使用 git add 把文件添加進去,實際上就是把文件添加到暫存區(qū)盒刚。
第二步:使用git commit提交更改腺劣,實際上就是把暫存區(qū)的所有內(nèi)容提交到當前分支上。
我們繼續(xù)使用demo來演示下:
我們在readme.txt再添加一行內(nèi)容為4444444因块,接著在目錄下新建一個文件為test.txt 內(nèi)容為test橘原,
我們先用git status查看狀態(tài):
現(xiàn)在我們先使用git add 命令把2個文件都添加到暫存區(qū)中,再使用git status來查看下狀態(tài)涡上,如下:
接著我們可以使用git commit一次性提交到分支上趾断,如下:
4.撤銷操作和刪除文件操作
(1)撤銷操作
比如我現(xiàn)在在readme.txt文件里面增加一行 內(nèi)容為55555555,我們先通過命令查看如下:
在我未提交之前吩愧,我發(fā)現(xiàn)添加55555555內(nèi)容有誤芋酌,所以我得馬上恢復(fù)以前的版本,現(xiàn)在我可以有如下幾種方法可以做修改:
第一:如果我知道要刪掉那些內(nèi)容的話雁佳,直接手動更改去掉那些需要的文件脐帝,然后add添加到暫存區(qū),最后commit掉甘穿。
第二:我可以按以前的方法直接恢復(fù)到上一個版本腮恩。使用 git reset --hard HEAD^
但是現(xiàn)在我不想使用上面的2種方法梢杭,我想直接想使用撤銷命令該如何操作呢温兼?首先在做撤銷之前,我們可以先用 git status 查看下當前的狀態(tài)武契。如下所示:
可以發(fā)現(xiàn)募判,Git會告訴你荡含,git checkout -- file 可以丟棄工作區(qū)的修改,如下命令:
git checkout -- readme.txt,如下所示:
命令 git checkout --readme.txt 意思就是届垫,把readme.txt文件在工作區(qū)做的修改全部撤銷释液,這里有2種情況,如下:
1.readme.txt自動修改后装处,還沒有放到暫存區(qū)误债,使用 撤銷修改就回到和版本庫一模一樣的狀態(tài)。
2.另外一種是readme.txt已經(jīng)放入暫存區(qū)了妄迁,接著又作了修改寝蹈,撤銷修改就回到添加暫存區(qū)后的狀態(tài)。
對于第二種情況登淘,我想我們繼續(xù)做demo來看下箫老,假如現(xiàn)在我對readme.txt添加一行 內(nèi)容為66666666,我git add 增加到暫存區(qū)后黔州,接著添加內(nèi)容7777777耍鬓,我想通過撤銷命令讓其回到暫存區(qū)后的狀態(tài)。如下所示:
(2)刪除文件
假如我現(xiàn)在版本庫testgit目錄添加一個文件b.txt,然后提交流妻。如下:
如上:一般情況下牲蜀,可以直接在文件目錄中把文件刪了,或者使用如上rm命令:rm b.txt 绅这,如果我想徹底從版本庫中刪掉了此文件的話各薇,可以再執(zhí)行commit命令 提交掉,現(xiàn)在目錄是這樣的君躺,
只要沒有commit之前峭判,如果我想在版本庫中恢復(fù)此文件如何操作呢?
可以使用如下命令 git checkout -- b.txt棕叫,如下所示:
再來看看我們testgit目錄林螃,添加了3個文件了。如下所示:
二俺泣、遠程倉庫
在了解之前疗认,先注冊github賬號,由于你的本地Git倉庫和github倉庫之間的傳輸是通過SSH加密的伏钠,所以需要一點設(shè)置:
第一步:創(chuàng)建SSH Key横漏。在用戶主目錄下,看看有沒有.ssh目錄熟掂,如果有缎浇,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果有的話赴肚,直接跳過此如下命令素跺,如果沒有的話二蓝,打開命令行,輸入如下命令:
ssh-keygen -t rsa –C “youremail@example.com”, 由于我本地此前運行過一次指厌,所以本地有刊愚,如下所示:
id_rsa是私鑰,不能泄露出去踩验,id_rsa.pub是公鑰鸥诽,可以放心地告訴任何人。
第二步:登錄github,打開” settings”中的SSH Keys頁面箕憾,然后點擊“Add SSH Key”,填上任意title衙传,在Key文本框里黏貼id_rsa.pub文件的內(nèi)容。
點擊 Add Key厕九,你就應(yīng)該可以看到已經(jīng)添加的key蓖捶。
(1)如何添加遠程庫
現(xiàn)在的情景是:我們已經(jīng)在本地創(chuàng)建了一個Git倉庫后,又想在github創(chuàng)建一個Git倉庫扁远,并且希望這兩個倉庫進行遠程同步俊鱼,這樣github的倉庫可以作為備份,又可以其他人通過該倉庫來協(xié)作畅买。
首先并闲,登錄github上,然后在右上角找到“create a new repo”創(chuàng)建一個新的倉庫谷羞。如下:
在Repository name填入testgit帝火,其他保持默認設(shè)置,點擊“Create repository”按鈕湃缎,就成功地創(chuàng)建了一個新的Git倉庫:
目前犀填,在GitHub上的這個testgit倉庫還是空的,GitHub告訴我們嗓违,可以從這個倉庫克隆出新的倉庫九巡,也可以把一個已有的本地倉庫與之關(guān)聯(lián),然后蹂季,把本地倉庫的內(nèi)容推送到GitHub倉庫冕广。
現(xiàn)在,我們根據(jù)GitHub的提示偿洁,在本地的testgit倉庫下運行命令:
$ git remote add origin https://github.com/Qd527213991/testgit.git
把本地庫的內(nèi)容推送到遠程撒汉,使用 git push命令,實際上是把當前分支master推送到遠程涕滋。
由于遠程庫是空的睬辐,我們第一次推送master分支時,加上了 –u參數(shù),Git不但會把本地的master分支內(nèi)容推送的遠程新的master分支溉委,還會把本地的master分支和遠程的master分支關(guān)聯(lián)起來,在以后的推送或者拉取時就可以簡化命令爱榕。推送成功后瓣喊,可以立刻在github頁面中看到遠程庫的內(nèi)容已經(jīng)和本地一模一樣了,上面的要輸入github的用戶名和密碼如下所示:
從現(xiàn)在起黔酥,只要本地作了提交藻三,就可以通過如下命令:
git push origin master
把本地master分支的最新修改推送到github上了,現(xiàn)在你就擁有了真正的分布式版本庫了跪者。
(2)如何從遠程克隆分支棵帽?
上面我們了解了先有本地庫,后有遠程庫時候渣玲,如何關(guān)聯(lián)遠程庫逗概。
現(xiàn)在我們想,假如遠程庫有新的內(nèi)容了逾苫,我想克隆到本地來 如何克隆呢?
首先枚钓,登錄github铅搓,創(chuàng)建一個新的倉庫,名字叫testgit2.如下:
如下搀捷,我們看到:
現(xiàn)在星掰,遠程庫已經(jīng)準備好了,下一步是使用命令git clone克隆一個本地庫了嫩舟。如下所示:
接著在我本地目錄下 生成testgit2目錄了氢烘,如下所示: