日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

三分鐘上手!一文看懂 Git 的底層工作原理

來(lái)源: 責(zé)編: 時(shí)間:2023-08-20 23:17:10 731觀(guān)看
導(dǎo)讀這是一篇能讓你迅速了解 Git 工作原理的文章,實(shí)戰(zhàn)案例解析,相信我,3 分鐘,絕對(duì)能夠有收獲!Git 目錄結(jié)構(gòu)Git 的本質(zhì)是一個(gè)文件系統(tǒng)(很重要,記住這句話(huà),理解這句話(huà)),工作目錄中的所有文件的歷史版本以及提交記錄(commit)都是以文件

這是一篇能讓你迅速了解 Git 工作原理的文章,實(shí)戰(zhàn)案例解析,相信我,3 分鐘,絕對(duì)能夠有收獲!ARu28資訊網(wǎng)——每日最新資訊28at.com

Git 目錄結(jié)構(gòu)

Git 的本質(zhì)是一個(gè)文件系統(tǒng)(很重要,記住這句話(huà),理解這句話(huà)),工作目錄中的所有文件的歷史版本以及提交記錄(commit)都是以文件對(duì)象的方式保存在 .git 目錄中的。ARu28資訊網(wǎng)——每日最新資訊28at.com

我們先來(lái)創(chuàng)建一個(gè)名為 git-demo 空目錄,并采用 git init 命令初始化 Git 倉(cāng)庫(kù)。該命令會(huì)在工作目錄下生成一個(gè) .git 目錄,該目錄將用于保存工作區(qū)中所有的文件歷史的歷史版本,commit,branch,tag 等所有信息。ARu28資訊網(wǎng)——每日最新資訊28at.com

$ mkdir git-demo$ cd git-demo$ git init

其目錄結(jié)構(gòu)如下:ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

待會(huì)我們重點(diǎn)關(guān)注下這幾個(gè)目錄:ARu28資訊網(wǎng)——每日最新資訊28at.com

  • HEAD:工作目錄當(dāng)前狀態(tài)對(duì)應(yīng)的 commit,一般來(lái)說(shuō)是當(dāng)前 branch 的 head,HEAD 也可以通過(guò) git checkout 命令被直接設(shè)置到一個(gè)特定的 commit 上,這種情況被稱(chēng)之為 detached HEAD
  • objects:這里是真正保存 Git 對(duì)象的目錄,包括三類(lèi)對(duì)象 commit,tree 和 blob(具體這三類(lèi)對(duì)象是什么,慢慢往下看就知道了)
  • refs:用來(lái)保存 branch 和 tag 對(duì)應(yīng)的 commit

Git 三大對(duì)象

目前 Objects 目錄中還沒(méi)有任何內(nèi)容,我們創(chuàng)建一個(gè)文件并提交:ARu28資訊網(wǎng)——每日最新資訊28at.com

$ git:(master) echo "my project" > README$ git:(master) mkdir src$ git:(master) echo "hello world" > src/file1.txt

添加并提交:ARu28資訊網(wǎng)——每日最新資訊28at.com

$ git:(master) git add .$ git:(master) git commit -m "init commit"

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

從打印輸出可以看到,上面的命令創(chuàng)建了一個(gè) commit 對(duì)象,該 commit 包含兩個(gè)文件。查看 .git/objects 目錄,可以看到該目錄下增加了 5 個(gè)子目錄 06,3b, 82, c5, ca,每個(gè)子目錄下有一個(gè)以一長(zhǎng)串字母數(shù)字命令的文件:ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

這一大串是什么?ARu28資訊網(wǎng)——每日最新資訊28at.com

Git Object 目錄中存儲(chǔ)了三種對(duì)象:Commit, Tree 和 Blob,Git 會(huì)為對(duì)象生成一個(gè)文件,并根據(jù)文件信息生成一個(gè) SHA-1 哈希值作為文件內(nèi)容的校驗(yàn)和,創(chuàng)建以該校驗(yàn)和前兩個(gè)字符為名稱(chēng)的子目錄,并以 (校驗(yàn)和) 剩下 38 個(gè)字符為文件命名 ,將該文件保存至子目錄下。ARu28資訊網(wǎng)——每日最新資訊28at.com

可以通過(guò) git cat-file -t 哈希值 命令查看對(duì)象類(lèi)型,通過(guò) git cat-file -p 哈希值 命令查看對(duì)象中的內(nèi)容,哈希值就是目錄名+文件名,在沒(méi)有歧義的情況下,命令可以不用輸入整個(gè)哈希值,輸入前幾位即可。ARu28資訊網(wǎng)——每日最新資訊28at.com

我們挨個(gè)看下:ARu28資訊網(wǎng)——每日最新資訊28at.com

065bca(blob):ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

3b18e(blob):ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

824244(tree):ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

c5bc98(commit):ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

ca96(tree):ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

認(rèn)真看圖,大家看完也就差不多清楚了 commit、blob、tree 這幾大對(duì)象是什么東西了ARu28資訊網(wǎng)——每日最新資訊28at.com

從 commit 對(duì)象(c5bc98)入手,commit 對(duì)象中保存了 commit 的作者,commit 的描述信息,簽名信息以及該 commit 中包含哪些 tree 對(duì)象和 blob 對(duì)象。從上圖可知包含了 tree 對(duì)象(ca96)。ARu28資訊網(wǎng)——每日最新資訊28at.com

可以把 tree 對(duì)象看成這次提交相關(guān)的所有文件的根目錄,可以看到 ca96 這個(gè) tree 對(duì)象中包含了一個(gè) blob 對(duì)象(065bca),即 README 文件,以及一個(gè) tree 對(duì)象(824244),即 src 目錄。而 blob 對(duì)象存儲(chǔ)的就是真正的內(nèi)容。ARu28資訊網(wǎng)——每日最新資訊28at.com

這幾個(gè)對(duì)象的對(duì)應(yīng)關(guān)系如下圖所示:ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

Git Brach 和 Tag

現(xiàn)在來(lái)看下 HEAD 中的內(nèi)容,前面說(shuō)過(guò),HEAD 中存儲(chǔ)的是工作目錄當(dāng)前狀態(tài)對(duì)應(yīng)的 commit:ARu28資訊網(wǎng)——每日最新資訊28at.com

$ git:(master) cat .git/HEADref: refs/heads/master
$ git:(master) cat .git/refs/heads/masterc5bc98b8990bedd7444da537320559e601eba87b

c5bc98 正是我們最近的這次 commit!ARu28資訊網(wǎng)——每日最新資訊28at.com

master 是一個(gè)分支名,所以分支(branch)的本質(zhì)是一個(gè)指向 commit 的指針ARu28資訊網(wǎng)——每日最新資訊28at.com

我們切一個(gè)新分支 feat/work:ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

查看下 refs/heads/master 和 refs/heads/feat/work 中的 commit 值:ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

從其內(nèi)容可以看到,feat/work 這個(gè) branch 并沒(méi)有創(chuàng)建任何新的版本文件,和 master 一樣指向了 c5bc98 這個(gè) commit。ARu28資訊網(wǎng)——每日最新資訊28at.com

從上面的實(shí)驗(yàn)可以看出,一個(gè) branch 其實(shí)只是一個(gè) commit 對(duì)象的應(yīng)用,Git 并不會(huì)為每個(gè) branch 存儲(chǔ)一份拷貝,因此在 git 中創(chuàng)建 branch 幾乎沒(méi)有任何代價(jià)。ARu28資訊網(wǎng)——每日最新資訊28at.com

接下來(lái)我們?cè)?feat/work 這個(gè) branch上進(jìn)行一些修改,然后提交:ARu28資訊網(wǎng)——每日最新資訊28at.com

$ git:(feat/work) echo "new line" >> src/file1.txt$ git:(feat/work) echo "do nothing" >> License$ git:(feat/work) git add .$ git:(feat/work) git commit -m "some change"

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

查看當(dāng)前的 HEAD:ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

可以看到 HEAD 指向了 feat/work 這個(gè) branch,而 feat/work branch則指向了 8a442 這個(gè)commit,master branch 指向的 commit 未變化,仍然是 c5bc98。ARu28資訊網(wǎng)——每日最新資訊28at.com

查看 8a442 這個(gè)commit對(duì)象的內(nèi)容:ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

可以看到 commit 有一個(gè) parent 字段,指向了前一個(gè) commit c5bc98。還包含了一個(gè) tree 對(duì)象(2a9dd):ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

可以觀(guān)察到,由于 README 沒(méi)有變化,還是指向的 065bca 這個(gè)blob對(duì)象。License 是一個(gè)新建的 blob 對(duì)象,src 和 file1.txt 則指向了新版本的對(duì)象。ARu28資訊網(wǎng)——每日最新資訊28at.com

增加了這次 commit 后,Git 中各個(gè)對(duì)象的關(guān)系如下圖所示:ARu28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片ARu28資訊網(wǎng)——每日最新資訊28at.com

Tag 和 branch 類(lèi)似,也是指向某個(gè) commit 的指針。不同的是 tag 創(chuàng)建后其指向的 commit 不能變化,而 branch 創(chuàng)建后,其指針會(huì)在提交新的 commit 后向前移動(dòng)。ARu28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-6179-0.html三分鐘上手!一文看懂 Git 的底層工作原理

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 最新技術(shù)趨勢(shì):RabbitMQ在云原生應(yīng)用中的應(yīng)用

下一篇: GitHub和碼云上,七個(gè)H5頁(yè)面制作工具推薦

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • 一加Ace2 Pro官宣:普及16G內(nèi)存 引領(lǐng)24G

    一加官方今天繼續(xù)為本月發(fā)布的新機(jī)一加Ace2 Pro帶來(lái)預(yù)熱,公布了內(nèi)存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領(lǐng),還有呢?#一加Ace2Pro#,2023 年 8 月,敬請(qǐng)期待。”同時(shí)
  • 帥氣純真少年!日本最帥初中生選美冠軍出爐

    日本第一帥哥初一生選美大賽冠軍現(xiàn)已正式出爐,冠軍是來(lái)自千葉縣的宗田悠良。日本一直熱衷于各種選美大賽,從“最美JK”起到“最美女星&r
  • JVM優(yōu)化:實(shí)戰(zhàn)OutOfMemoryError異常

    一、Java堆溢出堆內(nèi)存中主要存放對(duì)象、數(shù)組等,只要不斷地創(chuàng)建這些對(duì)象,并且保證 GC Roots 到對(duì)象之間有可達(dá)路徑來(lái)避免垃 圾收集回收機(jī)制清除這些對(duì)象,當(dāng)這些對(duì)象所占空間超過(guò)
  • 慕巖炮轟抖音,百合網(wǎng)今何在?

    來(lái)源:價(jià)值研究所 作者:Hernanderz“難道就因?yàn)樽约旱囊粋€(gè)產(chǎn)品牛逼了,從客服到總裁,都不愿意正視自己產(chǎn)品和運(yùn)營(yíng)上的問(wèn)題,選擇逃避了嗎?”這一番話(huà),出自百合網(wǎng)聯(lián)合創(chuàng)
  • 猿輔導(dǎo)與新東方的兩種“歸途”

    作者|卓心月 出品|零態(tài)LT(ID:LingTai_LT)如何成為一家偉大企業(yè)?答案一定是對(duì)“勢(shì)”的把握,這其中最關(guān)鍵的當(dāng)屬對(duì)企業(yè)戰(zhàn)略的制定,且能夠站在未來(lái)看現(xiàn)在,即使這其中的
  • iQOO Neo8 Pro搶先上架:首發(fā)天璣9200+ 安卓性能之王

    經(jīng)過(guò)了一段時(shí)間的密集爆料,昨日iQOO官方如期對(duì)外宣布:將于5月23日推出全新的iQOO Neo8系列新品,官方稱(chēng)這是一款擁有旗艦級(jí)性能調(diào)校的作品。隨著發(fā)布時(shí)
  • 聯(lián)想小新Pad Pro 12.6將要推出,搭載高通驍龍 870 處理器

    聯(lián)想小新Pad Pro 12.6將于秋季新品會(huì)上推出,官方按照慣例直接在發(fā)布會(huì)前給出了機(jī)型的所有參數(shù)。聯(lián)想小新 Pad Pro 12.6 將搭載高通驍龍 870 處理器,重量為 5
  • 聯(lián)想的ThinkBook Plus下一版曝光,鍵盤(pán)旁邊塞個(gè)平板

    ThinkBook Plus 是聯(lián)想的一個(gè)特殊筆記本類(lèi)別,它在封面放入了一塊墨水屏,也給人留下了較為深刻的印象。據(jù)有人爆料,聯(lián)想的下一款 ThinkBook Plus 可能更特殊,它
  • SN570 NVMe SSD固態(tài)硬盤(pán) 價(jià)格與性能兼具

    SN570 NVMe SSD固態(tài)硬盤(pán)是西部數(shù)據(jù)發(fā)布的最新一代WD Blue系列的固態(tài)硬盤(pán),不僅閃存技術(shù)更為精進(jìn),性能也得到了進(jìn)一步的躍升。WD Blue SN570 NVMe SSD的包裝外
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲电影下载| 在线看片一区| 欧美视频二区36p| 性欧美大战久久久久久久免费观看| 激情综合色综合久久综合| 欧美丝袜一区二区| 免费观看在线综合色| 亚洲欧美在线磁力| 亚洲区免费影片| 国内精品美女在线观看| 国产精品久久久久久影院8一贰佰| 美乳少妇欧美精品| 欧美在线视频在线播放完整版免费观看 | 亚洲国产美女| 一区二区三区在线看| 国产欧美精品一区aⅴ影院| 欧美日韩国产成人| 久久在线视频| 久久久免费精品| 久久久国产精品一区| 久久av资源网| 欧美激情四色| 欧美激情视频一区二区三区免费 | 欧美日韩在线直播| 欧美日韩日韩| 欧美激情一区二区三区全黄| 美女主播一区| 欧美婷婷在线| 一色屋精品视频在线看| 在线看一区二区| 国内不卡一区二区三区| 国产婷婷一区二区| 国产欧美一区二区精品婷婷| 国产精品日韩在线播放| 国产精品福利影院| 国产精品亚洲综合| 国产深夜精品| 99re热这里只有精品免费视频| 亚洲国产小视频在线观看| 国产精品红桃| 国产亚洲精品v| 一区二区三区四区五区视频| 在线视频亚洲欧美| 久久这里只精品最新地址| 久久琪琪电影院| 欧美成人r级一区二区三区| 欧美国产日本在线| 欧美日本一道本| 欧美日韩人人澡狠狠躁视频| 国产精品久久二区二区| 国产精品毛片一区二区三区 | 欧美精品免费在线| 国产精品成人一区二区三区吃奶| 在线精品国产成人综合| 欧美一区二区三区在线看 | 欧美v日韩v国产v| 欧美日韩精品免费观看视频完整| 国产一区二区三区在线观看视频| 尤妮丝一区二区裸体视频| 亚洲国产专区校园欧美| 一本一道久久综合狠狠老精东影业 | 亚洲国产欧美不卡在线观看| 久久成人18免费网站| 老司机精品久久| 欧美黑人在线观看| 狠狠色丁香久久婷婷综合丁香| 亚洲免费一区二区| 久久激情一区| 欧美xart系列高清| 韩国一区电影| 日韩一级裸体免费视频| 亚洲欧美春色| 久久综合狠狠| 欧美亚洲第一页| 红桃av永久久久| 在线视频精品一区| 久久国产精品久久久久久久久久 | 亚洲三级免费电影| 亚洲欧美日本另类| 欧美高清在线一区| 亚洲国产精品国自产拍av秋霞| 在线一区二区三区四区五区| 欧美一区二区精品久久911| 免费成人网www| 在线看不卡av| 蜜桃久久精品一区二区| 一色屋精品视频在线观看网站| 久久国产直播| 极品少妇一区二区| 亚洲视频一二区| 欧美日韩亚洲91| 亚洲高清免费在线| 麻豆久久婷婷| 亚洲人成小说网站色在线| 欧美国产精品一区| 亚洲美女电影在线| 久久亚裔精品欧美| 亚洲国产99| 欧美国产亚洲精品久久久8v| 日韩一区二区免费看| 欧美色欧美亚洲另类二区| 亚洲线精品一区二区三区八戒| 久久午夜色播影院免费高清| 亚洲高清在线精品| 欧美日韩成人一区| 亚洲国产色一区| 欧美激情一区在线观看| 国产专区欧美专区| 亚洲小视频在线| 国产精品久久久久久超碰 | 国产婷婷97碰碰久久人人蜜臀| 一区二区三区免费网站| 国产精品对白刺激久久久| 午夜精品久久久久久久99樱桃| 欧美三级电影网| 亚洲欧美在线免费观看| 欧美天天在线| 亚洲免费成人av电影| 久久福利电影| 亚洲国产精品第一区二区三区 | 在线观看视频免费一区二区三区| 欧美在线综合| 亚洲国产高潮在线观看| 欧美日韩精品在线| 欧美一区二区在线视频| 亚洲福利视频网站| 免费在线看一区| 一本大道av伊人久久综合| 国产目拍亚洲精品99久久精品| 亚洲一区精品视频| 欧美日韩高清区| 欧美一级视频精品观看| 亚洲电影在线| 国产精品hd| 久久在线免费观看| 中文一区二区| 精品成人免费| 国产精品激情| 蜜桃久久精品乱码一区二区| 亚洲国产精品成人精品| 欧美丝袜第一区| 久久亚洲一区二区| 激情另类综合| 欧美视频中文一区二区三区在线观看 | 亚洲每日更新| 国产亚洲一区在线| 欧美日韩理论| 久久久蜜臀国产一区二区| 在线观看久久av| 国产精品高精视频免费| 久久亚洲欧洲| 性色av一区二区三区| 亚洲精品日韩久久| 国产精品va| 免费在线观看成人av| 亚洲欧美综合v| 日韩视频在线你懂得| 影音先锋国产精品| 国产伦理一区| 欧美日韩综合视频| 欧美成人一区二区三区| 在线一区免费观看| 亚洲国产精品激情在线观看| 国产日韩精品在线| 久久久久国产一区二区| 亚洲网站视频| 国产欧美亚洲一区| 欧美日精品一区视频| 欧美二区在线| 久久人人97超碰国产公开结果| 亚洲国产一二三| 国产一区二区在线观看免费| 国产精品久久久久久模特| 欧美精品一区二区三区视频| 久久久久久自在自线| 欧美一区二区三区的| 亚洲午夜精品17c| 国内精品视频在线观看| 国产精品免费网站| 老司机67194精品线观看| 欧美亚洲综合久久| 亚洲日韩中文字幕在线播放| 一区二区三区在线免费播放| 欧美成人小视频| 久久阴道视频| 久久国产精品久久w女人spa| 亚洲欧美一级二级三级| 亚洲无线观看| 国产精品99久久久久久久久| 亚洲精品一区二| 亚洲精品一区二区三区在线观看| 国产精品免费视频观看| 欧美三级精品| 欧美色图一区二区三区| 欧美日韩免费在线观看| 欧美日本精品| 欧美日韩大片| 欧美日韩精品| 欧美色图麻豆| 国产精品白丝黑袜喷水久久久| 欧美婷婷久久| 国产精品视频福利| 国产免费成人| 欧美日韩麻豆|