用git管理我們的代碼有很多好處,首先壁涎,每一個(gè) Git克隆 都是一個(gè)完整的文件庫(kù)凡恍,含有全部歷史記錄和修訂追蹤能力,相對(duì)獨(dú)立怔球。不依賴于網(wǎng)絡(luò)連接或中心服務(wù)器嚼酝。最大特色就是“分支”及“合并”操作非常快速竟坛、簡(jiǎn)便闽巩。把內(nèi)容按元數(shù)據(jù)方式存儲(chǔ),完整克隆版本庫(kù)担汤。
版本控制之Git(初體驗(yàn))介紹了git管理代碼的初級(jí)應(yīng)用涎跨。下圖整理平時(shí)工作中常用的命令。
關(guān)于hash值
首先我們先創(chuàng)建三個(gè)文件test.txt 和 README 和 LISENCE漫试,git add . 提交到暫存區(qū)之后 git commit 到歷史記錄區(qū)六敬。
上節(jié)說(shuō)過(guò),一旦git init初始化之后驾荣,在我們的文件夾里就會(huì)出現(xiàn).git文件,里面是git的元數(shù)據(jù)普泡。那我們cd .git 查看一下播掷,git里面究竟是什么內(nèi)容、發(fā)現(xiàn)里面很多東西撼班,那我們后面會(huì)解釋這些東西是什么歧匈,先cd objects,打開(kāi)這個(gè)文件夾砰嘁,發(fā)現(xiàn)里面還有一些件炉,那我們?cè)匐S便打開(kāi)查看一下ls 0b,發(fā)現(xiàn)這個(gè)字符串特別像commit的hash值矮湘,那我們git log(下圖)查看一下斟冕,發(fā)現(xiàn)git把commit的sha1的hash值拆分成了兩個(gè)部分,前兩個(gè)字母0a缅阳,作為一個(gè)文件夾磕蛇,后邊一部分作為文件放在文件夾里。這樣是為了檢索的方便。
那我們git cat-file -p 0a62da68834c3czd13c3b0d02b9771e184bdadf3 查看一下這個(gè)hash值里面的內(nèi)容
發(fā)現(xiàn)里面有tree秀撇,和tree的hash值超棺,tree是樹(shù)的概念,那我們?cè)賕it cat-file -p <tree的hash值>呵燕,查看一下里面的內(nèi)容棠绘,發(fā)現(xiàn)里面還有3個(gè)hash值,這三個(gè)hash值又正好對(duì)應(yīng)我們剛開(kāi)始創(chuàng)建的三個(gè)文件再扭。
每當(dāng)我們提交一次的時(shí)候弄唧,我們所在的目錄作為一個(gè)整體,git用一種數(shù)據(jù)結(jié)構(gòu)霍衫,叫tree來(lái)表示它候引,給他生成一個(gè)hash值,這個(gè)hash值里面包含了我們所有的文件敦跌,每個(gè)具體文件都是一種blob結(jié)構(gòu)澄干,并且他也有一個(gè)hash值,這個(gè)hash值里面柠傍,就是文件的內(nèi)容麸俘。
所以,對(duì)于git來(lái)講惧笛,每一個(gè)目錄都是tree的形式存在的从媚,每個(gè)不可分割的文件,都是以blob的形式存在的患整。
此時(shí)拜效,我們仔細(xì)看著5個(gè)hash值,再查看一下objects中的文件夾各谚,發(fā)現(xiàn)每個(gè)hash值的前兩個(gè)字符正好對(duì)應(yīng)5個(gè)文件夾的名稱紧憾。
那此時(shí)如果我們更改text.rb里面的文件內(nèi)容,并且提交上去昌渤。git log 查看日志赴穗,發(fā)現(xiàn)多了一個(gè)hash值
那我們?cè)俅未蜷_(kāi)這個(gè)hash值,會(huì)發(fā)現(xiàn)膀息,git將它重新進(jìn)行了一次sha1的hash般眉,但是其他沒(méi)有更改的兩個(gè)文件的hash并沒(méi)有變化。
這說(shuō)明潜支,我們每次更改并且提交文件的時(shí)候甸赃,對(duì)應(yīng)文件的hash值會(huì)變化,隨之我們對(duì)應(yīng)的tree的hash值和提交時(shí)產(chǎn)生的commit的hash值也會(huì)變化毁腿。所以辑奈,我們只要更改一個(gè)文件苛茂,就會(huì)至少會(huì)產(chǎn)生3個(gè)hash值的變化。那是不是很浪費(fèi)空間鸠窗,其實(shí)計(jì)算機(jī)在閑置的時(shí)候會(huì)自動(dòng)壓縮很久沒(méi)有使用的hash值妓羊。
但是,新提交的時(shí)候稍计,會(huì)有一個(gè)parent的hash值躁绸,這個(gè)hash值指向的就是我們上一次提交的文件、這樣就將我們每次提交的文件都會(huì)保留下來(lái)臣嚣。比如說(shuō)我們最后一次提交的C文件净刮,他的parent的hash值指向了上一次提交的B文件,B文件的parent的hash值就指向了他第一次提交的A文件硅则。這樣就將我們的歷史記錄聯(lián)系了起來(lái)淹父。
git應(yīng)用----上傳代碼至新浪云
1、獲取域名
首先在新浪云中創(chuàng)建一個(gè)云應(yīng)用怎虫。
新浪云首頁(yè)---控制臺(tái)---云應(yīng)用SAE---應(yīng)用管理---創(chuàng)建新應(yīng)用---填寫二級(jí)域名信息和應(yīng)用名稱---創(chuàng)建應(yīng)用
2暑认、創(chuàng)建應(yīng)用成功后,會(huì)彈出一個(gè)窗口大审,里面是你的倉(cāng)庫(kù)信息
3蘸际、注意圖片下方的git代碼部署說(shuō)明。
1徒扶、先將我們本地的代碼的文件進(jìn)行g(shù)it init初始化粮彤,變成git倉(cāng)庫(kù)
2、然后git add . 將我們的全部文件添加到暫存區(qū)
3姜骡、git commit -m ‘日志’ 將我們的代碼填寫好日志由暫存區(qū)提交到歷史記錄區(qū)
4导坟、然后git push sae master:1 將我們本地的代碼上傳到新浪云的服務(wù)器中
5、重新刷新新浪云的網(wǎng)頁(yè)溶浴,這時(shí)就能在新浪云服務(wù)器中查看我們的代碼了乍迄。
當(dāng)然,如果我們?nèi)绻呀?jīng)在本地提交到歷史記錄區(qū)了士败,那么直接push進(jìn)新浪云就可以。
利用git也可以上傳代碼到github褥伴,利用github管理我們的代碼谅将。這個(gè)應(yīng)該玩過(guò)github的人都知道的