国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當前位置:首頁 > 科技  > 軟件

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

來源: 責編: 時間:2023-08-20 23:17:10 728觀看
導讀這是一篇能讓你迅速了解 Git 工作原理的文章,實戰案例解析,相信我,3 分鐘,絕對能夠有收獲!Git 目錄結構Git 的本質是一個文件系統(很重要,記住這句話,理解這句話),工作目錄中的所有文件的歷史版本以及提交記錄(commit)都是以文件

這是一篇能讓你迅速了解 Git 工作原理的文章,實戰案例解析,相信我,3 分鐘,絕對能夠有收獲!kox28資訊網——每日最新資訊28at.com

Git 目錄結構

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

我們先來創建一個名為 git-demo 空目錄,并采用 git init 命令初始化 Git 倉庫。該命令會在工作目錄下生成一個 .git 目錄,該目錄將用于保存工作區中所有的文件歷史的歷史版本,commit,branch,tag 等所有信息。kox28資訊網——每日最新資訊28at.com

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

其目錄結構如下:kox28資訊網——每日最新資訊28at.com

圖片圖片kox28資訊網——每日最新資訊28at.com

待會我們重點關注下這幾個目錄:kox28資訊網——每日最新資訊28at.com

  • HEAD:工作目錄當前狀態對應的 commit,一般來說是當前 branch 的 head,HEAD 也可以通過 git checkout 命令被直接設置到一個特定的 commit 上,這種情況被稱之為 detached HEAD
  • objects:這里是真正保存 Git 對象的目錄,包括三類對象 commit,tree 和 blob(具體這三類對象是什么,慢慢往下看就知道了)
  • refs:用來保存 branch 和 tag 對應的 commit

Git 三大對象

目前 Objects 目錄中還沒有任何內容,我們創建一個文件并提交:kox28資訊網——每日最新資訊28at.com

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

添加并提交:kox28資訊網——每日最新資訊28at.com

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

圖片圖片kox28資訊網——每日最新資訊28at.com

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

圖片圖片kox28資訊網——每日最新資訊28at.com

這一大串是什么?kox28資訊網——每日最新資訊28at.com

Git Object 目錄中存儲了三種對象:Commit, Tree 和 Blob,Git 會為對象生成一個文件,并根據文件信息生成一個 SHA-1 哈希值作為文件內容的校驗和,創建以該校驗和前兩個字符為名稱的子目錄,并以 (校驗和) 剩下 38 個字符為文件命名 ,將該文件保存至子目錄下。kox28資訊網——每日最新資訊28at.com

可以通過 git cat-file -t 哈希值 命令查看對象類型,通過 git cat-file -p 哈希值 命令查看對象中的內容,哈希值就是目錄名+文件名,在沒有歧義的情況下,命令可以不用輸入整個哈希值,輸入前幾位即可。kox28資訊網——每日最新資訊28at.com

我們挨個看下:kox28資訊網——每日最新資訊28at.com

065bca(blob):kox28資訊網——每日最新資訊28at.com

圖片圖片kox28資訊網——每日最新資訊28at.com

3b18e(blob):kox28資訊網——每日最新資訊28at.com

圖片圖片kox28資訊網——每日最新資訊28at.com

824244(tree):kox28資訊網——每日最新資訊28at.com

圖片圖片kox28資訊網——每日最新資訊28at.com

c5bc98(commit):kox28資訊網——每日最新資訊28at.com

圖片圖片kox28資訊網——每日最新資訊28at.com

ca96(tree):kox28資訊網——每日最新資訊28at.com

圖片圖片kox28資訊網——每日最新資訊28at.com

認真看圖,大家看完也就差不多清楚了 commit、blob、tree 這幾大對象是什么東西了kox28資訊網——每日最新資訊28at.com

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

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

這幾個對象的對應關系如下圖所示:kox28資訊網——每日最新資訊28at.com

圖片圖片kox28資訊網——每日最新資訊28at.com

Git Brach 和 Tag

現在來看下 HEAD 中的內容,前面說過,HEAD 中存儲的是工作目錄當前狀態對應的 commit:kox28資訊網——每日最新資訊28at.com

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

c5bc98 正是我們最近的這次 commit!kox28資訊網——每日最新資訊28at.com

master 是一個分支名,所以分支(branch)的本質是一個指向 commit 的指針kox28資訊網——每日最新資訊28at.com

我們切一個新分支 feat/work:kox28資訊網——每日最新資訊28at.com

圖片圖片kox28資訊網——每日最新資訊28at.com

查看下 refs/heads/master 和 refs/heads/feat/work 中的 commit 值:kox28資訊網——每日最新資訊28at.com

圖片圖片kox28資訊網——每日最新資訊28at.com

從其內容可以看到,feat/work 這個 branch 并沒有創建任何新的版本文件,和 master 一樣指向了 c5bc98 這個 commit。kox28資訊網——每日最新資訊28at.com

從上面的實驗可以看出,一個 branch 其實只是一個 commit 對象的應用,Git 并不會為每個 branch 存儲一份拷貝,因此在 git 中創建 branch 幾乎沒有任何代價。kox28資訊網——每日最新資訊28at.com

接下來我們在 feat/work 這個 branch上進行一些修改,然后提交:kox28資訊網——每日最新資訊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"

圖片圖片kox28資訊網——每日最新資訊28at.com

查看當前的 HEAD:kox28資訊網——每日最新資訊28at.com

圖片圖片kox28資訊網——每日最新資訊28at.com

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

查看 8a442 這個commit對象的內容:kox28資訊網——每日最新資訊28at.com

圖片圖片kox28資訊網——每日最新資訊28at.com

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

圖片圖片kox28資訊網——每日最新資訊28at.com

可以觀察到,由于 README 沒有變化,還是指向的 065bca 這個blob對象。License 是一個新建的 blob 對象,src 和 file1.txt 則指向了新版本的對象。kox28資訊網——每日最新資訊28at.com

增加了這次 commit 后,Git 中各個對象的關系如下圖所示:kox28資訊網——每日最新資訊28at.com

圖片圖片kox28資訊網——每日最新資訊28at.com

Tag 和 branch 類似,也是指向某個 commit 的指針。不同的是 tag 創建后其指向的 commit 不能變化,而 branch 創建后,其指針會在提交新的 commit 后向前移動。kox28資訊網——每日最新資訊28at.com

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

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 最新技術趨勢:RabbitMQ在云原生應用中的應用

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

標簽:
  • 熱門焦點
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
久久综合九色综合欧美狠狠| 中文无字幕一区二区三区| 中文无字幕一区二区三区| 国产精品狼人久久影院观看方式| 欧美一区二区性放荡片| 亚洲特黄一级片| 国产乱妇无码大片在线观看| 午夜亚洲福利| 国产欧美一区二区精品久导航| 亚洲人成精品久久久久| 国产一区不卡视频| 久久久久欧美精品| 欧美一级免费观看| 久久久91精品国产一区二区精品| 亚洲美女淫视频| 国产精品一区二区久久不卡 | 青草av.久久免费一区| 亚洲一区激情| 精品国产制服丝袜高跟| 国产精品99久久久久久似苏梦涵 | 国产精品一二三| 亚洲女爱视频在线| 在线高清一区| 日本一区免费视频| 亚洲国产婷婷| 亚洲香蕉伊在人在线观| 99精品热6080yy久久| 国模娜娜一区二区三区| 欧洲中文字幕精品| 成人网男人的天堂| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美淫片网站| 香蕉乱码成人久久天堂爱免费| 色吊一区二区三区| 国产一区二区三区日韩| 中文字幕在线一区免费| 91丨porny丨蝌蚪视频| 亚洲一区二区欧美| 欧美在线一二三四区| 国产盗摄一区二区三区| 无码av中文一区二区三区桃花岛| 国产午夜久久| www.欧美.com| 亚洲成人av一区二区| 欧美成人性福生活免费看| 香蕉久久夜色精品| 在线看国产一区二区| 成人h精品动漫一区二区三区| av影院午夜一区| 欧美激情一区二区三区不卡| 美玉足脚交一区二区三区图片| 日本aⅴ精品一区二区三区| 欧美精品一区视频| 欧美性感一区二区三区| 色综合中文字幕国产 | 久久久久久久电影| 欧美午夜精品一区二区蜜桃 | 日韩欧美一级片| 在线观看精品一区| 一本大道久久a久久综合婷婷 | 免费av网站大全久久| 欧美国产丝袜视频| 久久成人18免费观看| 亚洲成人一区二区| 亚洲女与黑人做爰| 亚洲三级电影网站| 欧美大片日本大片免费观看| 欧美精品成人一区二区三区四区| 一本久道久久综合狠狠爱| 在线成人亚洲| 在线欧美日韩| 日韩欧美国产三级| 国产日本欧洲亚洲| 日韩一级黄色片| 国产精品三级电影| 国产亚洲综合性久久久影院| 国产精品久久久久久户外露出 | 蜜桃视频免费观看一区| 一区二区三区加勒比av| 午夜精品久久久久久久久久| 中文字幕精品三区| 韩国精品在线观看| 一区二区高清免费观看影视大全| 亚洲国产精品欧美一二99 | 成人av电影在线| 91丨porny丨户外露出| 欧美阿v一级看视频| 欧美三区不卡| 欧洲另类一二三四区| 欧洲中文字幕精品| 亚洲欧洲日本在线| 亚洲人成在线播放网站岛国| 激情综合色综合久久综合| 午夜视频在线观看一区二区三区| 国产91露脸合集magnet| 色综合中文综合网| 亚洲一区二三区| 国产高清精品网站| 欧美精选一区| 欧美三级电影在线看| 日韩免费性生活视频播放| 亚洲柠檬福利资源导航| 久久成人免费网| 国产欧美午夜| 欧美mv和日韩mv国产网站| 亚洲自拍都市欧美小说| 精东粉嫩av免费一区二区三区| 一本不卡影院| 欧美放荡的少妇| 日本亚洲天堂网| 日韩一卡二卡三卡四卡| 国产精品传媒视频| 波多野结衣亚洲一区| 久久激情一区| 日本亚洲免费观看| 一区二区三区日韩精品| 欧美国产亚洲另类动漫| 国产精品videosex极品| 久久久久国产精品一区二区| 国产精品伦一区| 国产一区二区福利| 7777精品伊人久久久大香线蕉| 综合久久久久久久| 亚洲成人资源| 自拍偷自拍亚洲精品播放| 岛国av在线一区| 色94色欧美sute亚洲线路一久 | 亚洲一区二区三区精品在线| 国产一区二区视频在线播放| 欧美一区二区三区在线观看 | 91精品国产综合久久精品麻豆| 九九国产精品视频| 色婷婷av一区二区三区之一色屋| 一区二区三区在线观看动漫| 国产精品二区二区三区| 亚洲天堂av老司机| 国产一区二区三区自拍| 亚洲色图视频网| 亚洲一区二区三区高清| 亚洲一区二区三区三| 欧美综合在线视频| 日韩高清不卡在线| 久久嫩草精品久久久精品| 国产精品一区二区久久不卡| 中文字幕中文乱码欧美一区二区| av电影在线观看一区| 久久这里只精品最新地址| 99精品国产高清一区二区| 亚洲欧美日韩中文播放 | 国语自产精品视频在线看8查询8| 亚洲视频一二区| 亚洲综合不卡| 国产成人a级片| 国产欧美日韩综合精品一区二区| 久久五月激情| 国内精品国产成人| 日韩制服丝袜先锋影音| 欧美日韩国产综合视频在线观看| 午夜精品美女久久久久av福利| 亚洲视频中文字幕| 在线成人av网站| 国产视频久久| 懂色av一区二区三区蜜臀| 首页国产欧美日韩丝袜| 欧美xxxxxxxxx| 亚洲欧美99| 极品中文字幕一区| 黄色资源网久久资源365| 精品在线观看视频| 中文字幕亚洲精品在线观看| 欧美日韩你懂的| 色悠悠久久综合| 国产在线精品一区二区中文| 91亚洲国产成人精品一区二区三| 亚洲天堂2014| 一区二区三区蜜桃| 国产亚洲午夜高清国产拍精品| 色吊一区二区三区| 久久久久欧美精品| 在线观看欧美亚洲| 亚洲国产一区二区三区在线播 | 精品999成人| 成人ar影院免费观看视频| 高清成人在线观看| 久久 天天综合| 国产成人免费av在线| 久久99国产精品免费网站| 亚洲第一主播视频| 日本aⅴ精品一区二区三区| 亚洲色图在线看| 蜜臀久久99精品久久久久宅男| 亚洲精品水蜜桃| 一区二区在线观看视频在线观看| 国产精品久久久久久久久久免费看| 日韩三级高清在线| 亚洲一区二区五区| 亚洲欧美激情视频在线观看一区二区三区| 国产日韩欧美精品电影三级在线| 国产精品嫩草99a| 国产欧美一区二区三区在线看蜜臀|