起步
為什么需要版本控制
??版本控制是一種記錄一個或若干文件內(nèi)容變化摇予,以便將來查閱特定版本修訂情況的系統(tǒng)。
版本控制的發(fā)展:
??本地版本控制系統(tǒng)——無法協(xié)同工作的問題——>集中式版本控制系統(tǒng)【CVS析桥、Subversion】——出現(xiàn)單點(diǎn)故障的問題——>分布式版本控制系統(tǒng)【git两踏、BitKeeper】
Git簡史
??Linux內(nèi)核開源項(xiàng)目組使用BitKeeper進(jìn)行項(xiàng)目管理—>BitKeeper收回了免費(fèi)的權(quán)利—>Linus Torvalds開發(fā)出自己的版本控制系統(tǒng)Git(2005年)
Git是什么败京?
-
直接記錄快照兜喻,而非差異比較
??基于差異的版本控制:將存儲的信息看作是一組基本文件和每個文件隨時間的逐步累積的差異梦染。如下圖所示:
image.png
??基于快照的版本控制:Git將數(shù)據(jù)看作是一系列快照。當(dāng)進(jìn)行提交和保存項(xiàng)目狀態(tài)時朴皆,基本上對此時的全部文件創(chuàng)建一個快照帕识,并保存這個快照的索引。(為了提高效率遂铡,對于沒有修改的文件肮疗,只保留一個鏈接指向之前存儲的文件即可,不需要重新存儲該文件)扒接。如下圖所示:
image.png - Git中所有操作均是本地進(jìn)行
??Git的本地倉庫是遠(yuǎn)程倉庫的克隆伪货。
??Git的本地倉庫是將遠(yuǎn)程倉庫的所有信息下載下來的,并保存在Git倉庫目錄中(Git倉庫目錄是保存Git的元數(shù)據(jù)和對象數(shù)據(jù)庫钾怔,該部分的數(shù)據(jù)是Git最重要的部分碱呼,從其他計算機(jī)克隆倉庫時,復(fù)制的就是Git倉庫目錄)宗侦。
??Git中的操作都是在本地倉庫進(jìn)行操作愚臀,本地操作完成后提交到遠(yuǎn)程倉庫即可。 - Git保證數(shù)據(jù)的完整性
??Git所有數(shù)據(jù)在存儲之前都進(jìn)行計算校驗(yàn)和(SHA-1機(jī)制)矾利。 - Git一般只添加數(shù)據(jù)
??Git的這種性質(zhì)能夠保證數(shù)據(jù)的永不丟失姑裂。 - Git的三種狀態(tài):modified(已修改)、staged(已暫存)男旗、committed(已提交)
Git安裝
查看git命令的幫助文檔
git <某個命令> -h|--help
Git中常用的概念
- Untracked:未跟蹤的文件
- new file: 新創(chuàng)建的文件
- tracked:已跟蹤的文件
- modified:已修改的文件
- deleted:已刪除的文件
- working tree:工作區(qū)舶斧,用戶編寫項(xiàng)目的地方,所有的文件都在該區(qū)域
- staged:暫存區(qū)察皇,進(jìn)行
git add
操作之后捧毛,文件被跟蹤,暫時存放的地方。 - local category:本地倉庫呀忧,進(jìn)行
git commit
操作之后师痕,文件存放的地方 - remote category:遠(yuǎn)程倉庫,進(jìn)行
git push
操作之后而账,文件存放的地方胰坟。 - branch:分支。分支管理是git版本管理的核心泞辐。