日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Git 中的对象模型和文件的详细视图 —— Git 学习笔记 13

發(fā)布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git 中的对象模型和文件的详细视图 —— Git 学习笔记 13 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Git 中的對象模型和文件的詳細(xì)視圖

文章目錄

  • Git 中的對象模型和文件的詳細(xì)視圖
    • 初始狀態(tài)
    • 編輯一個文件之后
    • 暫存文件后
    • 提交之后
    • 參考資料

本文將用幾幅圖來可視化一個叫 file1的文件從修改到暫存,再到提交的整個過程。相信會對你理解 Git 有一些幫助。

初始狀態(tài)

初始狀態(tài)如下圖所示:

可以看到,工作目錄包含file1和file2兩個文件,分別包含內(nèi)容 “foo” 和 “bar”.

除了工作目錄下的file1和file2之外,master 分支上有一個提交(初始提交),用圓形表示。它指向的三角形其實(shí)是一棵樹(你可以把它想象成目錄),樹指向了和file1和file2內(nèi)容完全一樣的 “foo” 和 “bar”.

索引中的那個三角形,和對象庫的那棵樹是完全一樣的,它們都指向相同的對象(“foo” 和 “bar”)。

這幅圖還告訴我們,分支就是一個指針,指向某個提交。

目前來看,工作區(qū)、索引、對象庫是完全一致的,沒有什么是臟的。

編輯一個文件之后

如圖所示,當(dāng)把文件file1的內(nèi)容從 “foo” 改成 “quux” 之后,索引和對象庫并沒有變化,但是工作目錄臟了,因?yàn)樗退饕灰恢铝恕?/p>

暫存文件后

當(dāng)執(zhí)行命令git add file1后,一些有趣的變化發(fā)生了。

Git 首先取出工作目錄中file1的最新版本(“quux”),為它的內(nèi)容計算出一個 SHA1 散列 ID(bd71363),然后把這個 ID 保存在對象庫中(當(dāng)然,文件內(nèi)容也會保存在對象庫中)。接下來,Git 會改變索引,讓索引指向新的file1。由于文件file2沒有變化,所以索引依然指向原來的file2。

此時,工作目錄與索引是一致的。但是,索引和對象庫不一致。

提交之后

啊呀,提交之后好像圖示有點(diǎn)亂啊。別著急,我來解釋一下。

首先,索引對象轉(zhuǎn)化成了一個真實(shí)的樹對象(深色的三角形),這個對象會以 SHA1 命名(圖上沒有標(biāo)出來而已),被放到對象庫中。

其次,用你的日志消息創(chuàng)建了一個新的提交對象(深色的圓形)。新的提交對象會指向新創(chuàng)建的樹對象,并且指向前一個提交。

最后,master 分支的引用從最近一次提交移動到新創(chuàng)建的提交。

此時,工作目錄、索引和對象庫再次同步,又變得一致了。


參考資料

《Git 版本控制管理(第2版)》,人民郵電出版社

總結(jié)

以上是生活随笔為你收集整理的Git 中的对象模型和文件的详细视图 —— Git 学习笔记 13的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。