版本控制之Git(深入)

用git管理我們的代碼有很多好處,首先,每一個 Git克隆 都是一個完整的文件庫,含有全部歷史記錄和修訂追蹤能力,相對獨立。不依賴于網絡連接或中心服務器。最大特色就是“分支”及“合并”操作非常快速、簡便。把內容按元數據方式存儲,完整克隆版本庫。

版本控制之Git(初體驗)介紹了git管理代碼的初級應用。下圖整理平時工作中常用的命令。

git.png

關于hash值

首先我們先創建三個文件test.txt 和 README 和 LISENCE,git add . 提交到暫存區之后 git commit 到歷史記錄區。

01.jpg

上節說過,一旦git init初始化之后,在我們的文件夾里就會出現.git文件,里面是git的元數據。那我們cd .git 查看一下,git里面究竟是什么內容、發現里面很多東西,那我們后面會解釋這些東西是什么,先cd objects,打開這個文件夾,發現里面還有一些,那我們再隨便打開查看一下ls 0b,發現這個字符串特別像commit的hash值,那我們git log(下圖)查看一下,發現git把commit的sha1的hash值拆分成了兩個部分,前兩個字母0a,作為一個文件夾,后邊一部分作為文件放在文件夾里。這樣是為了檢索的方便。

02.jpg

那我們git cat-file -p 0a62da68834c3czd13c3b0d02b9771e184bdadf3 查看一下這個hash值里面的內容

03.jpg

發現里面有tree,和tree的hash值,tree是樹的概念,那我們再git cat-file -p <tree的hash值>,查看一下里面的內容,發現里面還有3個hash值,這三個hash值又正好對應我們剛開始創建的三個文件。

每當我們提交一次的時候,我們所在的目錄作為一個整體,git用一種數據結構,叫tree來表示它,給他生成一個hash值,這個hash值里面包含了我們所有的文件,每個具體文件都是一種blob結構,并且他也有一個hash值,這個hash值里面,就是文件的內容。

所以,對于git來講,每一個目錄都是tree的形式存在的,每個不可分割的文件,都是以blob的形式存在的。

05.jpg

此時,我們仔細看著5個hash值,再查看一下objects中的文件夾,發現每個hash值的前兩個字符正好對應5個文件夾的名稱。

那此時如果我們更改text.rb里面的文件內容,并且提交上去。git log 查看日志,發現多了一個hash值


04.jpg

那我們再次打開這個hash值,會發現,git將它重新進行了一次sha1的hash,但是其他沒有更改的兩個文件的hash并沒有變化。

這說明,我們每次更改并且提交文件的時候,對應文件的hash值會變化,隨之我們對應的tree的hash值和提交時產生的commit的hash值也會變化。所以,我們只要更改一個文件,就會至少會產生3個hash值的變化。那是不是很浪費空間,其實計算機在閑置的時候會自動壓縮很久沒有使用的hash值。

06.jpg

但是,新提交的時候,會有一個parent的hash值,這個hash值指向的就是我們上一次提交的文件、這樣就將我們每次提交的文件都會保留下來。比如說我們最后一次提交的C文件,他的parent的hash值指向了上一次提交的B文件,B文件的parent的hash值就指向了他第一次提交的A文件。這樣就將我們的歷史記錄聯系了起來。

git應用----上傳代碼至新浪云

1、獲取域名

首先在新浪云中創建一個云應用。
新浪云首頁---控制臺---云應用SAE---應用管理---創建新應用---填寫二級域名信息和應用名稱---創建應用

0.png

2、創建應用成功后,會彈出一個窗口,里面是你的倉庫信息

1.jpg

3、注意圖片下方的git代碼部署說明。

1、先將我們本地的代碼的文件進行git init初始化,變成git倉庫
2、然后git add . 將我們的全部文件添加到暫存區
3、git commit -m ‘日志’ 將我們的代碼填寫好日志由暫存區提交到歷史記錄區
4、然后git push sae master:1 將我們本地的代碼上傳到新浪云的服務器中
5、重新刷新新浪云的網頁,這時就能在新浪云服務器中查看我們的代碼了。

當然,如果我們如果已經在本地提交到歷史記錄區了,那么直接push進新浪云就可以。

利用git也可以上傳代碼到github,利用github管理我們的代碼。這個應該玩過github的人都知道的

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容