01- Pro Git 起步

1.1 起步-關(guān)于版本控制

什么是版本控制

版本控制是一種記錄一個(gè)或若干文件內(nèi)容變化,以便將來(lái)查閱特定版本修訂情況的系統(tǒng)。是不是有點(diǎn)像月光寶盒。

本地版本控制

image.png

集中化的版本控制系統(tǒng)

CVS、Subversion都是集中化的版本控制系統(tǒng)。


image.png

分布式版本控制系統(tǒng)

Git就是分布式版本控制系統(tǒng)。


image.png

1.2 起步-Git簡(jiǎn)史

產(chǎn)生的背景

Linux內(nèi)核內(nèi)核維護(hù)工作一開(kāi)始使用BitKeeper來(lái)管理和維護(hù)代碼。到了 2005 年,開(kāi)發(fā) BitKeeper 的商業(yè)公司同 Linux 內(nèi)核開(kāi)源社區(qū)的合作關(guān)系結(jié)束,他們收回了 Linux 內(nèi)核社區(qū)免費(fèi)使用 BitKeeper 的權(quán)力。
Linux 開(kāi)源社區(qū)決定開(kāi)發(fā)出自己的版本系統(tǒng)。

Git的目標(biāo)

速度
簡(jiǎn)單的設(shè)計(jì)
對(duì)非線性開(kāi)發(fā)模式的強(qiáng)力支持(允許成千上萬(wàn)個(gè)并行開(kāi)發(fā)的分支
完全分布式
有能力高效管理類似 Linux 內(nèi)核一樣的超大規(guī)模項(xiàng)目(速度和數(shù)據(jù)量)

1.3 起步-Git基礎(chǔ)

問(wèn)題:Git的思想和基本工作原理是什么?

直接記錄快照,而非差異比較

CVS、Subversion等系統(tǒng)將它們保存的信息看作是一組基本文件和每個(gè)文件隨時(shí)間逐步累積的差異


差異積累

Git對(duì)的數(shù)據(jù)更像是一個(gè)快照流


文件快照

近乎所有操作都是本地執(zhí)行

在 Git 中的絕大多數(shù)操作都只需要訪問(wèn)本地文件和資源,一般不需要來(lái)自網(wǎng)絡(luò)上其它計(jì)算機(jī)的信息。

Git保證完整性

Git 數(shù)據(jù)庫(kù)中保存的信息都是以文件內(nèi)容的哈希值來(lái)索引,而不是文件名
Git 用以計(jì)算校驗(yàn)和的機(jī)制叫做 SHA-1 散列(hash,哈希)。 這是一個(gè)由 40 個(gè)十六進(jìn)制字符(0-9 和 a-f)組成字符串,基于 Git 中文件的內(nèi)容或目錄結(jié)構(gòu)計(jì)算出來(lái)。 SHA-1 哈??雌饋?lái)是這樣:

24b9da6552252987aa493b52f8696cd6d3b00373

Git一般只添加數(shù)據(jù)

你執(zhí)行的 Git 操作,幾乎只往 Git 數(shù)據(jù)庫(kù)中增加數(shù)據(jù)。 很難讓 Git 執(zhí)行任何不可逆操作,或者讓它以任何方式清除數(shù)據(jù)。

三種狀態(tài)

Git 有三種狀態(tài),你的文件可能處于其中之一:已提交(committed)、已修改(modified)和已暫存(staged)。

  • 已提交表示數(shù)據(jù)已經(jīng)安全的保存在本地?cái)?shù)據(jù)庫(kù)中。
  • 已修改表示修改了文件,但還沒(méi)保存到數(shù)據(jù)庫(kù)中。
  • 已暫存表示對(duì)一個(gè)已修改文件的當(dāng)前版本做了標(biāo)記,使之包含在下次提交的快照中。
    上面的標(biāo)記指的是什么動(dòng)作?總覺(jué)得已修改和已暫存有的混淆

三種工作區(qū)域

工作目錄、暫存區(qū)域以及 Git 倉(cāng)庫(kù)

Git 倉(cāng)庫(kù)、工作目錄以及暫存區(qū)域。
Git 倉(cāng)庫(kù)目錄是 Git 用來(lái)保存項(xiàng)目的元數(shù)據(jù)和對(duì)象數(shù)據(jù)庫(kù)的地方。 這是 Git 中最重要的部分,從其它計(jì)算機(jī)克隆倉(cāng)庫(kù)時(shí),拷貝的就是這里的數(shù)據(jù)。

工作目錄是對(duì)項(xiàng)目的某個(gè)版本獨(dú)立提取出來(lái)的內(nèi)容。 這些從 Git 倉(cāng)庫(kù)的壓縮數(shù)據(jù)庫(kù)中提取出來(lái)的文件,放在磁盤(pán)上供你使用或修改。

暫存區(qū)域是一個(gè)文件,保存了下次將提交的文件列表信息,一般在 Git 倉(cāng)庫(kù)目錄中。 有時(shí)候也被稱作‘索引’,不過(guò)一般說(shuō)法還是叫暫存區(qū)域。

Git基本工作流程

  1. 在工作目錄中修改文件。
  2. 暫存文件,將文件的快照放入暫存區(qū)域。
  3. 提交更新,找到暫存區(qū)域的文件,將快照永久性存儲(chǔ)到 Git 倉(cāng)庫(kù)目錄。

如果 Git 目錄中保存著的特定版本文件,就屬于已提交狀態(tài)。 如果作了修改并已放入暫存區(qū)域,就屬于已暫存狀態(tài)。 如果自上次取出后,作了修改但還沒(méi)有放到暫存區(qū)域,就是已修改狀態(tài)。

1.4 起步-命令行

Git 有多種使用方式。 你可以使用原生的命令行模式,也可以使用 GUI 模式,這些 GUI 軟件也能提供多種功能。
只有在命令行模式下你才能執(zhí)行 Git 的所有命令,而大多數(shù)的 GUI 軟件只實(shí)現(xiàn)了 Git 所有功能的一個(gè)子集以降低操作難度。

1.5 起步 - 安裝 Git

https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

1.6 起步 - 初次運(yùn)行 Git 前的配置

三種作用范圍的配置文件

Git 自帶一個(gè) git config 的工具來(lái)幫助設(shè)置控制 Git 外觀和行為的配置變量。 這些變量存儲(chǔ)在三個(gè)不同的位置
總結(jié)一句話就是:系統(tǒng)配置、當(dāng)前用戶配置和當(dāng)前項(xiàng)目配置三種

  1. /etc/gitconfig 文件: 包含系統(tǒng)上每一個(gè)用戶及他們倉(cāng)庫(kù)的通用配置。 如果使用帶有 --system 選項(xiàng)的 git config 時(shí),它會(huì)從此文件讀寫(xiě)配置變量。
  2. ~/.gitconfig 或 ~/.config/git/config 文件:只針對(duì)當(dāng)前用戶。 可以傳遞 --global 選項(xiàng)讓 Git 讀寫(xiě)此文件。
  3. 當(dāng)前使用倉(cāng)庫(kù)的 Git 目錄中的 config 文件(就是 .git/config):針對(duì)該倉(cāng)庫(kù)。

命令示例

# 設(shè)置全局用戶信息
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
# 設(shè)置編輯器
$ git config --global core.editor emacs
# 獲取配置信息列表
$ git config --list
user.name=John Doe
user.email=johndoe@example.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...
# 獲取指定配置信息
$ git config user.name
John Doe
# 獲取幫助
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Git 命令行學(xué)習(xí)筆記 Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)...
    sunnyghx閱讀 4,165評(píng)論 0 11
  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)。這樣一來(lái),任何一處協(xié)同...
    __silhouette閱讀 16,221評(píng)論 5 147
  • 早上起來(lái)覺(jué)察自己有情緒,但還是極力控制自己的情緒!是憤怒,是煩躁! 看見(jiàn)老公在打游戲,我的情緒就被鉤出來(lái)了!冷冷地...
    竺子閱讀 196評(píng)論 0 0
  • 剛知道簡(jiǎn)書(shū),很喜歡。很久以前就想有一個(gè)這樣的網(wǎng)站,我喜歡記錄,記錄我些許年來(lái)對(duì)生活、對(duì)學(xué)習(xí)、對(duì)人際、對(duì)自己、對(duì)他...
    冷情緒Lontano閱讀 182評(píng)論 0 0
  • 美國(guó)疾病預(yù)防和控制中心(CDC)發(fā)現(xiàn),超過(guò)25%的體檢測(cè)試是錯(cuò)誤的,超過(guò)90%的手術(shù)是多余的!-------《選...
    瓔珞兒閱讀 639評(píng)論 0 0

友情鏈接更多精彩內(nèi)容