1.集中式版本控制系統(tǒng)vs分布式版本控制系統(tǒng)
集中式版本控制系統(tǒng):版本庫集中存放在中央服務器。使用時必須先從中央服務器取得最新版本诉濒,工作完后在推送給中央服務器横辆。缺點是必須聯(lián)網(wǎng)才能工作,中央服務器要是出了問題所有人無法工作。常見的集中式版本控制系統(tǒng)有CVS和SVN.
分布式版本控制系統(tǒng):沒有“中央服務器”狈蚤,每個電腦上都是一個完整的版本庫。工作時不需要聯(lián)網(wǎng)锌畸,安全性高靖避。常見的分布式版本控制系統(tǒng)有Git.
2.什么是版本庫呢?
版本庫又名倉庫幻捏,英文名repository,你可以簡單理解成一個目錄篡九,這個目錄里面的所有文件都可以被Git管理起來,每個文件的修改伊佃、刪除,Git都能跟蹤航揉,以便任何時刻都可以追蹤歷史金刁,或者在將來某個時刻可以“還原”。
所有的版本控制系統(tǒng)胀葱,其實只能跟蹤文本文件的改動,比如TXT文件抵屿,網(wǎng)頁,所有的程序代碼等等搂抒,Git也不例外尿扯。而圖片、視頻這些二進制文件衷笋,雖然也能由版本控制系統(tǒng)管理,但沒法跟蹤文件的變化,只能把二進制文件每次改動串起來吝秕,也就是只知道圖片從100KB改成了120KB空幻,但到底改了啥,版本控制系統(tǒng)不知道秕铛,也沒法知道。
建議使用純文本方式編寫文件但两,并使用標準的UTF-8編碼。
3.Git中的常用操作命令小結(jié)
(1)初始化一個Git倉庫己肮,使用git init命令悲关。
添加文件到Git倉庫娄柳,分兩步:
第一步寓辱,使用命令git add (file)赤拒,注意,可反復多次使用挎挖,添加多個文件;
第二步崔涂,使用命令git commit始衅,完成。
為什么Git添加文件需要add汛闸,commit一共兩步呢?因為commit可以一次提交很多文件诸老,所以你可以多次add不同的文件
(2)要隨時掌握工作區(qū)的狀態(tài),使用git status命令蹄衷。
如果git status告訴你有文件被修改過,用git diff可以查看修改內(nèi)容宦芦。
git status命令可以讓我們時刻掌握倉庫當前的狀態(tài)
git diff顧名思義就是查看difference,顯示的格式正是Unix通用的diff格式
(3)git log命令顯示從最近到最遠的提交日志
如果嫌輸出信息太多抡砂,看得眼花繚亂的,可以試試加上--pretty=oneline參數(shù)? ? ? ? ? ? ? 即git log --pretty=oneline
在實際工作中注益,我們腦子里怎么可能記得一個幾千行的文件每次都改了什么內(nèi)容溯捆,不然要版本控制系統(tǒng)干什么。版本控制系統(tǒng)肯定有某個命令可以告訴我們歷史記錄提揍,在Git中,我們用git log命令查看
(4)HEAD指向的版本就是當前版本谎仲,因此刨仑,Git允許我們在版本的歷史之間穿梭郑诺,使用命令git reset --hard commit_id杉武。
穿梭前,用git log可以查看提交歷史飞涂,以便確定要回退到哪個版本祈搜。
要重返未來封拧,用git reflog查看命令歷史夭问,以便確定要回到未來的哪個版本。
在Git中捧杉,用HEAD表示當前版本,也就是最新的提交味抖。上一個版本就是HEAD^,上上一個版本就是HEAD^^仔涩,當然往上100個版本寫100個^比較容易數(shù)不過來,所以寫成HEAD~100佩研∠既啵回退到上一個版本,就可以使用git reset命令
4. 工作區(qū)和暫存區(qū)
工作區(qū)(Working Directory):
就是你在電腦里能看到的目錄适秩。
版本庫(Repository):
工作區(qū)有一個隱藏目錄.git,這個不算工作區(qū)骤公,而是Git的版本庫。
Git的版本庫里存了很多東西淋样,其中最重要的就是稱為stage(或者叫index)的暫存區(qū)胁住,還有Git為我們自動創(chuàng)建的第一個分支master刊咳,以及指向master的一個指針叫HEAD。