git基本原理

1. 為何選用git

?? git是分布式代碼版本管理工具。相比svn和其他版本控制系統(tǒng)來說,git功能更加強(qiáng)大放案。

* svn與git的比較

(1) git是分布式代碼版本管理工具双藕,而svn是集中式
??所謂分布式集中式止状,指的是代碼倉(cāng)庫(kù)與各個(gè)用戶的代碼倉(cāng)庫(kù)關(guān)聯(lián)關(guān)系。分布式講究的是每個(gè)用戶的計(jì)算機(jī)都能作為中央倉(cāng)庫(kù)攒霹,與其他計(jì)算機(jī)分享代碼倉(cāng)庫(kù)导俘,能夠在離線狀態(tài)下使用;而集中式講究中央控制剔蹋,會(huì)有一個(gè)獨(dú)立的代碼倉(cāng)庫(kù)旅薄,每次工作前都需要從中央倉(cāng)庫(kù)中拉取最新代碼,工作結(jié)束后需要提交到中央倉(cāng)庫(kù)泣崩,所以svn每次使用時(shí)必須在聯(lián)網(wǎng)狀態(tài)下少梁。


集中式代碼版本控制

分布式代碼版本控制

(2) git從遠(yuǎn)程倉(cāng)庫(kù)中拉取到最新的代碼后,能獲取到所有的歷史矫付,但svn不能凯沪。
(3) git分支指向的是某一次提交,而svn保存的是文件的目錄买优,因此git切換分支的成本遠(yuǎn)遠(yuǎn)小于svn的成本妨马。
(4) svn的操作命令比較簡(jiǎn)單,容易上手杀赢,相比之下git的命令比較復(fù)雜烘跺。
??綜上所述,git命令雖然比較復(fù)雜脂崔,但是不可否認(rèn)它的功能強(qiáng)大滤淳,因此大部分公司都采用git作為代碼版本控制工具。



2. git工作狀態(tài)

狀態(tài)示意圖:

工作狀態(tài)示意圖

從上圖我們可以看出砌左,工作狀態(tài)主要分為工作區(qū)脖咐、暫存區(qū)和遠(yuǎn)程倉(cāng)庫(kù)三個(gè)部分:
(1) 工作區(qū):工作區(qū)中的文件可以是遠(yuǎn)程倉(cāng)庫(kù)拉取下來的文件,在這些文件中汇歹,用戶可以使用并修改屁擅。
(2) 暫存區(qū):這里的文件是用戶在工作區(qū)中增刪改之后,準(zhǔn)備提交到遠(yuǎn)程倉(cāng)庫(kù)的內(nèi)容
(3) 遠(yuǎn)程倉(cāng)庫(kù): 一旦你的commit提交到了遠(yuǎn)程倉(cāng)庫(kù)中产弹,那么你的項(xiàng)目文件快照將會(huì)永久保存在歷史派歌。



3. git文件追蹤

??在git使用過程中,如果不想某些文件被追蹤并提交到git倉(cāng)庫(kù)取视,如日志文件硝皂、編譯的二進(jìn)制文件,則可以在git倉(cāng)庫(kù)的根路徑中添加.gitignore文件作谭,文件中所匹配到的文件則不會(huì)被追蹤到稽物。
.gitignore文件示例:

# ignore all .a files *.a
 * .a

?? 該文件可以使用正則表達(dá)式進(jìn)行書寫,從而能靈活的決定哪些文件需要提交到遠(yuǎn)程倉(cāng)庫(kù)并被其他人所共享折欠。
?? 注意:如果項(xiàng)目的子路徑也有.gitignore文件贝或,則子路徑將會(huì)覆蓋掉父路徑的文件吼过。

4. git的commit哈希算法

?? git 采用的是SHA-1算法,來保證commit的完整性咪奖。
?? SHA-1(英語:Secure Hash Algorithm 1盗忱,中文名:安全散列算法1)是一種密碼散列函數(shù),美國(guó)國(guó)家安全局設(shè)計(jì)羊赵,并由美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所(NIST)發(fā)布為聯(lián)邦數(shù)據(jù)處理標(biāo)準(zhǔn)(FIPS)趟佃。SHA-1可以生成一個(gè)被稱為消息摘要的160(20字節(jié))散列值,散列值通常的呈現(xiàn)形式為40個(gè)十六進(jìn)制數(shù)昧捷。
?? 雖然使用SHA-1算法會(huì)產(chǎn)生40個(gè)十六進(jìn)制數(shù)闲昭,但是git作為人性化方便使用的工具,通常來講可以使用前8-10位來唯一標(biāo)志一個(gè)commit靡挥,最多的linux內(nèi)核多達(dá) 875,000個(gè)commit序矩,也只需要前12位十六進(jìn)制數(shù)來表示唯一commit。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末跋破,一起剝皮案震驚了整個(gè)濱河市簸淀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌毒返,老刑警劉巖租幕,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異饿悬,居然都是意外死亡令蛉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門狡恬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蝎宇,你說我怎么就攤上這事弟劲。” “怎么了姥芥?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵兔乞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我凉唐,道長(zhǎng)庸追,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任台囱,我火速辦了婚禮淡溯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘簿训。我一直安慰自己咱娶,他們只是感情好米间,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著膘侮,像睡著了一般屈糊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上琼了,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天逻锐,我揣著相機(jī)與錄音,去河邊找鬼雕薪。 笑死昧诱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蹦哼。 我是一名探鬼主播鳄哭,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼纲熏!你這毒婦竟也來了妆丘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤局劲,失蹤者是張志新(化名)和其女友劉穎勺拣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鱼填,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡药有,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苹丸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愤惰。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赘理,靈堂內(nèi)的尸體忽然破棺而出宦言,到底是詐尸還是另有隱情,我是刑警寧澤商模,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布奠旺,位于F島的核電站,受9級(jí)特大地震影響施流,放射性物質(zhì)發(fā)生泄漏响疚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一瞪醋、第九天 我趴在偏房一處隱蔽的房頂上張望忿晕。 院中可真熱鬧,春花似錦趟章、人聲如沸杏糙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宏侍。三九已至赖淤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谅河,已是汗流浹背咱旱。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绷耍,地道東北人吐限。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像褂始,于是被迫代替她去往敵國(guó)和親诸典。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 1崎苗、文件結(jié)構(gòu) 1.1 config文件 該文件主要記錄針對(duì)該項(xiàng)目的一些配置信息狐粱,例如是否以bare[遠(yuǎn)端倉(cāng)庫(kù)...
    _叮叮當(dāng)當(dāng)__閱讀 622評(píng)論 0 0
  • 工作方式:Git 并不保存這些前后變化的差異數(shù)據(jù)。實(shí)際上胆数,Git 更像是把變化的文件作快照后肌蜻,記錄在一個(gè)微型的文件...
    WorldPeace_hp閱讀 233評(píng)論 0 0
  • 哈希 (1)不管輸入數(shù)據(jù)的數(shù)據(jù)量多大,輸入同一個(gè)哈希算法必尼,得到的加密結(jié)果長(zhǎng)度固定蒋搜;(2)哈希算法確定,輸入數(shù)據(jù)確定...
    LittleJessy閱讀 829評(píng)論 0 8
  • 本文參考自 Pro Git判莉,整理相關(guān)內(nèi)容豆挽,補(bǔ)充了細(xì)節(jié),并按照更容易理解的方式編寫出來券盅,期望能幫助你理解 Git 的...
    tingbuxialai閱讀 376評(píng)論 0 0
  • 一.底層命令(Plumbing)和高層命令(Porcelain) 本質(zhì)上祷杈,Git是一套內(nèi)容尋址(content-a...
    宇晨棒棒的閱讀 348評(píng)論 0 0