Git基(ji)礎知識 和 Git安(an)裝(zhuang) 配置
時間(jian):2018-09-25 來源:未知
要點一覽:
· 1.Git 簡介 與(yu) 基本概念
· 2.Git 安裝
· 3.Git 初次使用的配置
· 總結
1.git 簡介 與 基本概念
· git簡介:
GIt 首先是一個(ge)軟件(jian),一個(ge)實現"版本(ben)控(kong)制(zhi)管理"軟件(jian),關(guan)于版本(ben)控(kong)制(zhi)的相關(guan)知識,可以參考本(ben)文后面
給出的(de)鏈接(jie)。所謂版(ban)本管理軟(ruan)(ruan)件(jian)(jian)(jian),簡單來說(shuo),就(jiu)是一個進(jin)(jin)行(xing)備份管理的(de)軟(ruan)(ruan)件(jian)(jian)(jian),并且方(fang)便(bian)進(jin)(jin)行(xing)備份回溯(su)等操作的(de)軟(ruan)(ruan)件(jian)(jian)(jian)!
實際上我們在實際工作(zuo)中已經接觸過版本(ben)管理的概念了!
//比(bi)如:我們(men)在編寫程序(xu)時(shi),經(jing)常(chang)會(hui)這么做(zuo)!
$vi hello.c
//在要進(jin)行某些修改之前(qian),同(tong)時為了(le)不影響到原有文件,我們通常(chang)會(hui)這么(me)做
$cp hello.c 1-hello.c
//之后,對 1-hello.c 進行編輯(ji)
$vi 1-hello.c
這(zhe)些(xie)實(shi)際上就是(shi)在進行版本管(guan)理,只(zhi)是(shi)這(zhe)里有個專門的軟(ruan)件,也提(ti)供了更豐(feng)富的功能(neng)的軟(ruan)件實(shi)現這(zhe)樣的管(guan)理!
我們所介(jie)紹的(de)git,這(zhe)是(shi)繼Linux之后linus的(de)又(you)一偉大的(de)貢獻(xian)。產(chan)生的(de)背(bei)景正(zheng)是(shi)源(yuan)于對(dui)linux內核開源(yuan)個項目的(de)維護。
linux內核(he)開源項目(mu)的(de)維護,在2002 - 2005 年使用(yong)Bitkeeper 的(de)分布式(shi)本地(di)系統。 但(dan)是2005 年合作
關系結束后(hou) BitKeeper的公式回收了(le)免費(fei)使(shi)用(yong)的權(quan)利(li)。這使(shi)得(de)(de)Linus Torvalds 不得(de)(de)不吸(xi)取(qu)教訓,只有(you)開(kai)發一套屬于
自己的(de)版本(ben)控制系統才不至于重蹈覆(fu)轍。
這樣(yang)在(zai)消(xiao)失一(yi)周(zhou)之后,git誕(dan)生了,因其晦澀(se)難懂(dong),起(qi)初只有一(yi)些黑客在(zai)用 ,但是經過眾多開發者的努力,現(xian)在(zai)git
一杯(bei)全世界的程序(xu)員(yuan)所使(shi)用!
Git的(de)實(shi)現目標:
· 速度
· 簡單的(de)設計(ji)
· 對(dui)非(fei)線(xian)性開發模式的(de)強力支持(允(yun)許上千個并行開發的(de)分支)
· 完全分(fen)布式
· 有(you)能力(li)高效管(guan)理(li)類似 Linux 內核一(yi)樣的超大規模項目(速度(du)和數據量)
自誕生于 2005 年以來,Git 日(ri)臻成熟完善,在(zai)高度易用的同時,仍然保留著初(chu)期(qi)設(she)定(ding)的目標。它(ta)的速
度(du)飛快,極其適合管理(li)大項(xiang)目,它還有著令人難(nan)以(yi)置(zhi)信(xin)的非線性分支(zhi)管理(li)系統,可以(yi)應付各(ge)種復(fu)雜的項(xiang)
目(mu)開發(fa)需求。
(注: Linus 花了一周時間寫出來的,Git 10 周年訪談:Linus 講述背后(hou)故事 - 博客 - 伯樂在線
上面的(de)(de)git的(de)(de)誕生的(de)(de)背景(jing),那么要想(xiang)(xiang)實現對(dui)git的(de)(de)使用,必須(xu)對(dui)其基本的(de)(de)思想(xiang)(xiang)和(he)概念有認識和(he)了解!
· Git的思想和基本原理:
1.直接記錄快照,而非差異比較 (快照)
Git 和其他(ta)版本(ben)控制系(xi)統(tong)的(de)(de)主(zhu)要差別在于(yu),Git 只關(guan)心(xin)文(wen)件數據的(de)(de)整體是(shi)否發生變化,而(er)大多數其他(ta)系(xi)統(tong)則只關(guan)心(xin)文(wen)件內容的(de)(de)具體差異。
2.近乎所有的操作都是本地執行(本地)
實(shi)際上操作(zuo)的是git下來的本地(di)代碼庫,待(dai)有(you)網絡時,再(zai)更(geng)新到網絡。
3.時刻保持數據完整性(完整性)
git的設計(ji)(ji)哲學,git可(ke)以及(ji)時察覺到文件的變化。因為(wei)在保存到git之(zhi)前,所有(you)數據(ju)都要進行內容的校(xiao)驗和(he)(checksum)計(ji)(ji)算(suan)。并(bing)將此(ci)結果(guo)作為(wei)
數據的唯(wei)一標識和索(suo)引。
Git 使用(yong) SHA-1 算法計算數據的(de)校驗和(he),通過(guo)對文件的(de)內容(rong)或(huo)目錄的(de)結構計算出一個 SHA-1 哈希值,作為指紋(wen)字(zi)符串。該(gai)字(zi)串由 40 個十六
進制字(zi)符(0-9 及 a-f)組成,看起來(lai)就像是(shi):
24b9da6552252987aa493b52f8696cd6d3b00373
Git 的工作(zuo)(zuo)完全依賴于這類指紋(wen)字串,所(suo)以你會經常看到這樣(yang)的哈(ha)希值。實(shi)際上,所(suo)有保存在 Git 數據(ju)庫(ku)中的東西都是用(yong)此哈(ha)希值來作(zuo)(zuo)索引的,而不是靠文件名。
git使用的是(shi)哈希值(zhi)來索引(yin)文(wen)件(jian),而不是(shi)靠文(wen)件(jian)名。
4.多數操作僅做添加數據(添加)
常用的 Git 操作大多僅僅是把數據添加到數據庫。因為任何一(yi)種不(bu)可逆的操作,比如刪除數據,都會使回退或重(zhong)現歷史版本變得困難重(zhong)重(zhong)。
關(guan)鍵字: 快照 --- 本地 --- 完整性---添加
· git 實現版本原理原理

首先解釋(shi)一(yi)下上面涉及到(dao)的三個(ge)區域:
working directory (工作目錄)
staging area (暫存區域)
git directory (Git目錄(lu))
Git目錄:
它(ta)是 Git 用(yong)來保存元數(shu)(shu)據(ju)和(he)對象(xiang)數(shu)(shu)據(ju)庫的(de)地方。該(gai)目(mu)(mu)錄非(fei)常(chang)重要,每次克隆鏡像倉庫的(de)時候(hou),實(shi)際拷貝(bei)的(de)就是這個目(mu)(mu)錄里面的(de)數(shu)(shu)據(ju)。
如(ru)果 git clone 出來(lai)的(de)(de)話,就是其中 .git 的(de)(de)目(mu)錄(lu);如(ru)果 git clone --bare 的(de)(de)話,新建的(de)(de)目(mu)錄(lu)本(ben)身就是 Git 目(mu)錄(lu)。
工作目錄:
從(cong)項目中(zhong)取出(chu)某個版本的所有文件(jian)和(he)目錄(lu),用以開始后續工(gong)作(zuo)的叫做工(gong)作(zuo)目錄(lu)。這(zhe)些文件(jian)實際(ji)上(shang)都是(shi)從(cong) Git 目錄(lu)中(zhong)的壓(ya)縮(suo)對象數據庫
中提取出來的(de),接(jie)下來就可以(yi)在工(gong)作目錄(lu)中對這些文件進行編輯。
暫存區域:(實際(ji)上(shang)就是(shi) 準備入庫的"文件清單")
所謂的暫(zan)存區域只(zhi)不過是個(ge)簡單(dan)的文件(jian)(jian)(jian),一般都放在 Git 目錄中。有時候人(ren)們會把這個(ge)文件(jian)(jian)(jian)叫做索引文件(jian)(jian)(jian),不過標準說(shuo)法還是叫暫(zan)存區域。
所(suo)謂的(de)版本管理的(de)實(shi)現就是在(zai)這幾個區域之(zhi)間的(de)數據(ju)交(jiao)換(huan)。
通常基本操作流程:
1. 在"工作目(mu)錄"中修改某些(xie)文件。
2. 對修改后的(de)文件進行快照,然(ran)后保存(cun)到(dao)"暫存(cun)區域"。
3. 提交更(geng)新,將保(bao)存在(zai)"暫存區域"的文件快(kuai)照永(yong)久(jiu)轉儲到(dao)" Git 目錄"中。
所(suo)以(yi)(yi)我們(men)可以(yi)(yi)從文件(jian)所(suo)處的(de)位置來判斷狀態(tai):
如果是(shi)Git目錄中(zhong)保存這的(de)特(te)定版本文件,就屬于"已(yi)提(ti)交狀(zhuang)態(tai)"
如果做了修(xiu)改(gai)并以放入(ru)暫存(cun)(cun)區域(yu),就屬于(yu)"已暫存(cun)(cun)狀(zhuang)態"
如果(guo)子(zi)上次取出后,做了修改但是還(huan)沒有(you)放(fang)到暫存區域,就是"已(yi)修改狀態"
整個(ge)的流程(cheng)是這樣的:
"工作目(mu)錄(lu)(修改)"--快照--->"暫存區域(清單)"--提(ti)交--->"Git 目(mu)錄(lu)"
2.Git 安裝
git安裝:
1.ubuntu 下安裝:
命令行輸入:
$sudo apt-get install git
2,windows 下安裝:
//msysgit.github.com/
包含了(le)一(yi)個命令(ling)行的工具(ju)和圖(tu)形(xing)工具(ju)
下載自己的系統對應(ying)的版本(ben)進行(xing)安裝(zhuang)
3.Git 初次使用的配置
初次使用git時,需要做一些基本的配置!
可(ke)以進行(xing)配置的文(wen)件(jian)有(you)三個層次的文(wen)件(jian)
(1).系統級別
/etc/gitconfig文件: 系(xi)統中對(dui)所用(yong)用(yong)戶都普遍適用(yong)的配置。
命令:
$git config --system
(2).用戶級別
~/.gitconfig文件:
用(yong)戶目錄下的配置文件(jian),只適用(yong)該用(yong)戶。
命令:
$git config --global
(3).目錄級(ji)別
“工作目錄”下的“.git/config”文件,這里的配置只針對當前目錄有(you)效。
每個級別的配(pei)置會覆蓋(gai)上層的相同(tong)配(pei)置。
下面(mian)我(wo)們來進行配置(zhi),主要是針對當前用戶的(de)!
設計的(de)信息主(zhu)要是: 用戶名 和 用戶的(de)郵件信息
配(pei)置的作用:
每次Git提交(jiao)時,都會引用這(zhe)兩條信息,說(shuo)明(ming)是(shi)誰提交(jiao)了更新,會隨更新內容一起(qi)!

查看配置信息:

命令主要是三條:
$git config --global user.name "名字"
$git config --global user.email "郵箱(xiang)地址"
$git config --list
總結
(1).git的(de)(de)基(ji)本的(de)(de)實現的(de)(de)目標
(2).git的"三(san)(san)個區(qu)域"和文(wen)件的"三(san)(san)種狀態"
(3).git的(de)基本操作流程
(5).git的(de)安裝
(6).git的(de)初(chu)始配置
參考鏈接:
[1].git 使用簡易指南(nan)

