git 是一個純分布式版本控制系統,與本地版本控制系統(類似crs),集中化版本控制器(CVS,subversion)不同。
差別在于他在每台同步機器上都有完整版本庫儲存(可以離線送出)
學習git時,注意不要把以前使用其他版本控制的經驗帶入了,因為他們的指令很不同,而且,git的實作原理與傳統控制系統有很多不同,了解這些實作有利于使用git。
git儲存每次更新的檔案快照,而不是檔案變動,如果檔案沒有改動,則直接保留上次快照的連結。
git可以離線使用,本地庫儲存了所有目前項目的曆史記錄,git絕大多數操作都可以在本地完成。
git使用SHA-1校驗,同時對檔案和目錄結構做指紋,保持他們的完整性,是以會經常看到40個長度的字元串,這是git 工作依賴的指紋。
git大多數操作是儲存、添加資料,而非修改删除資料。任何一個檔案有committed,modified,staged。所有的版本記錄檔案會壓縮儲存在git目錄中。從git版本庫中取出檔案,進行開發時的目錄,可以了解為工作目錄。在工作目錄中修改檔案送出後,git會進行快照,儲存到暫存目錄(一般也在git目錄裡),最後送出更新時,暫存的快照會完整儲存到git目錄裡。
使用init指令初始化目錄,或者使用clone從線上拉去其他童鞋的開源項目。是初始化git的主要方法,init初始化後,使用add,commit
-m指令來添加檔案到版本管理,明确送出本次更新的msg。
使用add添加檔案後,檔案會被暫存起來,是以 add 的全稱是 add file into staged area。
當add檔案後,不立刻執行commit,而是繼續修改,那麼git會預設儲存上一次add的快照,這時如果要送出,需要重新add
如果需要屏蔽某些檔案,在工作目錄下建立 .gitignore檔案進行屏蔽,屏蔽使用正規表達式。比如 *.[ao]
*~
使用 git diff 檢視 未暫存 和 已暫存 檔案的差別,如果需要檢視 已暫存和上次快照的變化,使用 git diff —cached
檢視
使用 git commit -a 可以讓git自動對已經跟蹤的檔案做暫存+送出。省去git add 的執行。
使用git rm/mv可以移動/重命名/删除目錄下的檔案。git log 檢視送出記錄,log -p
檢視變化代碼。log還有很多擴充功能,甚至檢視變化行數,作者和編輯作者等待,檢視:http://www.ikandou.com/chapter/22134845/
— last update 2014.05.11