一获黔、第一步打開終端輸入git 檢測(cè)是否安裝git,如果已經(jīng)安裝好了會(huì)有如下效果
如果你碰巧用Debian或Ubuntu Linux玷氏,通過一條sudo apt-get install git
就可以直接完成Git的安裝渗蟹,非常簡(jiǎn)單雌芽。更多方法可以百度,或者訪問下面地址
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
二、第二步創(chuàng)建一個(gè)新目錄在終端輸入以下代碼:
* mkdir learngit 創(chuàng)建文件夾learngit
* cd mkdir 進(jìn)入文件夾中
三徘禁、第三步建立git倉庫輸入 git init
從下面的圖我們可以看到娘荡,learngit 中的文件都是隱藏文件必須用編譯器打開才能看到文件,創(chuàng)建完git倉庫我們就可以看到文件夾下多了一個(gè)后綴為.git 的文件夾大年。
四玉雾、第四步垦缅,接著在目錄下新建一個(gè)文檔凡恍,learngit.txt,內(nèi)容我們先這樣寫(至于為什么這樣寫咳焚,主要因?yàn)楸救吮容^喜歡古詩詞):
五、第五步庞溜,我們使用git add這個(gè)命令革半,將文件添加到倉庫中:
六、第六步流码,接下來又官,我們使用git commit這個(gè)命令,將文件提交到倉庫中:
-m后面的文字是本次提交到倉庫中的注釋漫试,每次提交時(shí)可以告訴大家我這次干了什么六敬。
七、第七步歧匈,修改文件口糕,我們刪除learngit.txt文件中的最后一行,我們運(yùn)行g(shù)it status
來查看一下弄唧。
git status命令可以讓我們實(shí)時(shí)掌握倉庫當(dāng)前的狀態(tài)辩稽,上面的命令告訴我們侮腹,readme.txt被修改過了履婉,但還沒有準(zhǔn)備提交的修改鸠窗。
雖然Git告訴我們r(jià)eadme.txt被修改了臣嚣,但如果能看看具體修改了什么內(nèi)容,自然是很好的饥努。比如你休假兩周從國外回來乍迄,第一天上班時(shí)逊躁,已經(jīng)記不清上次怎么修改的readme.txt囚戚,所以借嗽,需要用git diff這個(gè)命令看看:
git diff顧名思義就是查看difference(差異)肌索,顯示的格式正是Unix通用的diff格式诚亚,可以從上面的命令輸出看到闸准,我們刪除了最后一行詩句但惶。
知道了對(duì)readme.txt作了什么修改后扎瓶,再把它提交到倉庫就放心多了愈捅,提交修改和提交新文件是一樣的兩步,第一步是git add:
同樣沒有任何輸出慈鸠。在執(zhí)行第二步git commit之前蓝谨,我們?cè)龠\(yùn)行g(shù)it status看看當(dāng)前倉庫的狀態(tài):
git status告訴我們,將要被提交的修改包括readme.txt林束,下一步像棘,就可以放心地提交了,輸入git commit -m "add distributed":
提交后壶冒,我們?cè)儆胓it status命令看看倉庫的當(dāng)前狀態(tài):
Git告訴我們當(dāng)前沒有需要提交的修改缕题,而且,工作目錄是干凈(working directory clean)的胖腾。
八烟零,第八步版本退回
上面我們學(xué)習(xí)了怎樣修改文件,現(xiàn)在我們?cè)倬毩?xí)一次咸作,于是我們?cè)趓eadme.txt中再修改一點(diǎn)內(nèi)容。
然后添加并提交到倉庫墅诡。
像這樣桐智,你不斷對(duì)文件進(jìn)行修改,然后不斷提交修改到版本庫里然磷,就好比玩RPG游戲時(shí)姿搜,每通過一關(guān)就會(huì)自動(dòng)把游戲狀態(tài)存盤,如果某一關(guān)沒過去梭纹,你還可以選擇讀取前一關(guān)的狀態(tài)业踢。有些時(shí)候,在打Boss之前瞬沦,你會(huì)手動(dòng)存盤逛钻,以便萬一打Boss失敗了曙痘,可以從最近的地方重新開始立肘。Git也是一樣谅年,每當(dāng)你覺得文件修改到一定程度的時(shí)候,就可以“保存一個(gè)快照”旺订,這個(gè)快照在Git中被稱為commit区拳。一旦你把文件改亂了意乓,或者誤刪了文件届良,還可以從最近的一個(gè)commit恢復(fù),然后繼續(xù)工作,而不是把幾個(gè)月的工作成果全部丟失为障。
當(dāng)然了鳍怨,在實(shí)際工作中,我們腦子里怎么可能記得一個(gè)幾千行的文件每次都改了什么內(nèi)容声滥,不然要版本控制系統(tǒng)干什么落塑。版本控制系統(tǒng)肯定有某個(gè)命令可以告訴我們歷史記錄罐韩,在Git中散吵,我們用git log命令查看:
git log命令顯示從最近到最遠(yuǎn)的提交日志矾睦,我們可以看到2次提交枚冗。如果嫌輸出信息太多,看得眼花繚亂的肛宋,可以試試加上--pretty=oneline參數(shù):
需要友情提示的是酝陈,你看到的一大串類似3628164...882e1e0的是commit id(版本號(hào))沉帮,和SVN不一樣贫堰,Git的commit id不是1其屏,2,3……遞增的數(shù)字川背,而是一個(gè)SHA1計(jì)算出來的一個(gè)非常大的數(shù)字,用十六進(jìn)制表示膨更,而且你看到的commit id和我的肯定不一樣荚守,以你自己的為準(zhǔn)矗漾。為什么commit id需要用這么一大串?dāng)?shù)字表示呢踢俄?因?yàn)镚it是分布式的版本控制系統(tǒng)都办,后面我們還要研究多人在同一個(gè)版本庫里工作,如果大家都用1势木,2啦桌,3……作為版本號(hào)及皂,那肯定就沖突了验烧。
好了,現(xiàn)在我們啟動(dòng)時(shí)光穿梭機(jī)若治,準(zhǔn)備把readme.txt回退到上一個(gè)版本端幼,也就是“add distributed”的那個(gè)版本婆跑,怎么做呢庭呜?
首先摹迷,Git必須知道當(dāng)前版本是哪個(gè)版本,在Git中驮审,用HEAD表示當(dāng)前版本疯淫,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一樣)戳玫,上一個(gè)版本就是HEAD咕宿,上上一個(gè)版本就是HEAD,當(dāng)然往上100個(gè)版本寫100個(gè)比較容易數(shù)不過來缆镣,所以寫成HEAD~100董瞻。
看看readme.txt的內(nèi)容是不是版本add distributed:
我們查看文本文件:
可以發(fā)現(xiàn)我們添加的文字已經(jīng)不見了已經(jīng)退回之前的版本。
最新的那個(gè)版本已經(jīng)看不到了壹哺!好比你從21世紀(jì)坐時(shí)光穿梭機(jī)來到了19世紀(jì),想再回去已經(jīng)回不去了逝慧,腫么辦笛臣?
辦法其實(shí)還是有的沈堡,只要上面的命令行窗口還沒有被關(guān)掉燕雁,你就可以順著往上找啊找啊鲸拥,找到上面那個(gè)commit id是9838366...刑赶,于是就可以指定回到未來的某個(gè)版本:
版本號(hào)沒必要寫全撞叨,前幾位就可以了牵敷,Git會(huì)自動(dòng)去找法希。當(dāng)然也不能只寫前一兩位苫亦,因?yàn)镚it可能會(huì)找到多個(gè)版本號(hào),就無法確定是哪一個(gè)了村生。
再小心翼翼地看看readme.txt的內(nèi)容:
我們?cè)倏匆幌挛谋緝?nèi)容可以發(fā)現(xiàn)趁桃,果然卫病,我胡漢三又回來了蟀苛。
現(xiàn)在帜平,你回退到了某個(gè)版本梅鹦,關(guān)掉了電腦齐唆,第二天早上就后悔了,想恢復(fù)到新版本怎么辦茉帅?找不到新版本的commit id怎么辦堪澎?
在Git中,總是有后悔藥可以吃的马昙。當(dāng)你用$ git reset --hard HEAD^回退到舊版本時(shí),再想恢復(fù)到最新版本攒暇,就必須找到最新版本的commit id形用。Git提供了一個(gè)命令git reflog用來記錄你的每一次命令:
于是乎田度,我們就可以根據(jù)commit的id回到我們想要回到的任何一個(gè)版本。
未完待續(xù)詳情乎莉,請(qǐng)看下篇git 的使用(二)惋啃,也可參考一下面的網(wǎng)站监右。
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000