最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Git&Svn的區(qū)別

2023-04-21 10:01 作者:IT楓斗者-跳蚤網(wǎng)  | 我要投稿

前言它們都是什么?

Git是一款開(kāi)源的分布式版本控制系統(tǒng),用以有效、高速地處理從很小到非常大的項(xiàng)目版本管理。Git屬于分布式的版本控制系統(tǒng)。

svn是一款開(kāi)源的集中式版本控制系統(tǒng),用于多個(gè)人共同開(kāi)發(fā)同一個(gè)項(xiàng)目,實(shí)現(xiàn)共享資源,實(shí)現(xiàn)最終集中式的管理。SVN 屬于集中式版本控制系統(tǒng)IT楓斗者怎么樣)

在介紹它們區(qū)別前,我們先回憶下它們各自的命令。

IT楓斗者怎么樣

區(qū)別:
1,存儲(chǔ)區(qū)別

  • git是分布式的,有本地和遠(yuǎn)程兩個(gè)版本庫(kù),SVN是集中式,只有一個(gè)遠(yuǎn)程版本庫(kù);

  • git的內(nèi)容是按元數(shù)據(jù)方式存貯,所有控制文件在.git中,svn是按文件處理,所有資源控制文件在.svn中;

  • svn的分支是一個(gè)目錄,git不是;

  • git沒(méi)有一個(gè)全局的版本號(hào),svn有;

  • git內(nèi)容存貯是使用SHA-1哈希算法,能確保代碼完整性;

  • git 有工作區(qū),暫存區(qū),遠(yuǎn)程倉(cāng)庫(kù),git add將代碼提交到暫存區(qū), commit提交到本地版本庫(kù),push推送到遠(yuǎn)程版本庫(kù)。svn是add 提交到暫存,commit是提交到遠(yuǎn)程版本庫(kù)。(IT楓斗者怎么樣)

以單個(gè)文件為單位的適合用SVN管理,而我們代碼是以行數(shù)為單位,適合Git。

2,文件.git和.svn區(qū)別

1..svn目錄

隨便打開(kāi)一個(gè).svn的目錄可以看到結(jié)構(gòu):

如果無(wú)法查看.svn,window電腦-點(diǎn)擊查看-勾選隱藏文件;
mac直接shift + command + .

2..git 目錄結(jié)構(gòu)

你可能對(duì)這些目錄結(jié)構(gòu)很陌生,沒(méi)關(guān)系,直接在終端輸入 git help gitrepository-layout回車(chē),你會(huì)發(fā)現(xiàn)瀏覽器會(huì)打開(kāi)一個(gè)html文件,實(shí)際上就會(huì)打開(kāi)安裝git下面的一個(gè)html文檔

可以看出在處理代碼方面功能git比svn要強(qiáng)大一些


3,git文件動(dòng)態(tài)分析

3.1 add階段

1.執(zhí)行g(shù)it init會(huì)生成一個(gè)初始化的.git,會(huì)發(fā)現(xiàn)上面有些目錄文件沒(méi)有,因?yàn)橛行┪募侵付ǖ拿詈蟛艜?huì)生成2.新建一個(gè)test.txt,隨便寫(xiě)點(diǎn)內(nèi)容,執(zhí)行g(shù)it status

運(yùn)行 find . -type f

3.執(zhí)行 git add text.txt,顯示

運(yùn)行find . -type f

4.總結(jié):可以看出git add后test.txt 被標(biāo)記為staged 狀態(tài),而且object多了一個(gè)61/de0edff 文件,所以object 可以存貯git倉(cāng)庫(kù)內(nèi)容,以二進(jìn)制方式存貯。5.我們可以查看下文件來(lái)源

6.git如何管理和歸檔文件
我們常見(jiàn)的文件系統(tǒng)(NTFS、FAT、FAT32)是基于地址方式檢索文件,即先給具體的地址,然后從地址編號(hào)對(duì)應(yīng)的存儲(chǔ)單元讀取文件內(nèi)容,而git是基于內(nèi)容檢索,是對(duì)整個(gè)內(nèi)容檢索,得到一個(gè)真實(shí)的存儲(chǔ)位置,類(lèi)似哈希映射。
(IT楓斗者怎么樣)

3.2 commit階段

1.執(zhí)行 git commit -m 'add test'

2.運(yùn)行 find . -type f

可以看出commit 后在add 的基礎(chǔ)上object多了兩個(gè)文件ed/fd7e90和26/ef8e8,從文件的歸檔路徑和命名可以看出git使用SHA-1算法對(duì)文件內(nèi)容進(jìn)行了校驗(yàn)。(IT楓斗者怎么樣)還多了一個(gè)COMMIT_EDITMSG ,里面是上一次提交的注釋信息3.使用git cat-file 查看來(lái)源

ed/fd7e90 是一個(gè)commit 對(duì)象,tree屬性指向了26/ef8e8,記錄了文件操作,作者,提交者信息;26/ef8e8 是一個(gè)tree 對(duì)象,blob 屬性指向了blob對(duì)象61/de0edf,記錄了文件名;61/de0edf 是一個(gè)blob 對(duì)象,記錄了文件內(nèi)容。三個(gè)文件關(guān)系:

(IT楓斗者怎么樣)

為什么object文件會(huì)很大了吧。


3.3 branchgit branch?

獲取分支列表列表保存到refs/heads/master 下面


3.4 git對(duì)象模型

通過(guò)上面3.2的分析知道,在git系統(tǒng)中有四種對(duì)象:

  • commit:指向一個(gè)tree,記錄了文件操作,作者,提交者信息;

  • tree:對(duì)象關(guān)系樹(shù),管理tree和blob的關(guān)系;

  • blob:保存文件內(nèi)容;

  • tag:標(biāo)記提交。

3.5 git生命周期鉤子

  1. 鉤子初始化:上面說(shuō)到的hooks 下面都是生命周期腳本,初始化倉(cāng)庫(kù)(git init)或 git clone 都會(huì)初始化.git文件;

  2. 鉤子是本地的,因?yàn)椴粫?huì)提交到代碼倉(cāng)庫(kù),只不過(guò)clone的時(shí)候會(huì)初始化;

  3. 鉤子分類(lèi):

(IT楓斗者怎么樣)


Git&Svn的區(qū)別的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
长寿区| 竹北市| 锦州市| 防城港市| 宁南县| 保山市| 犍为县| 崇州市| 全州县| 马鞍山市| 桦甸市| 合作市| 剑阁县| 顺义区| 东山县| 福贡县| 诸城市| 延庆县| 东乌珠穆沁旗| 长宁县| 永嘉县| 临夏市| 保康县| 团风县| 寿宁县| 遵义县| 睢宁县| 长垣县| 曲麻莱县| 天祝| 玉树县| 南昌市| 阜康市| 阳朔县| 灌云县| 梅河口市| 垦利县| 庆安县| 星子县| 余姚市| 长泰县|