国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng)

這篇具有很好參考價(jià)值的文章主要介紹了Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1. Introduction 介紹

在 git 的豐富功能中,工作區(qū) (Work Space)、暫存區(qū) (Index/Staging?Area)、本地倉(cāng)庫(kù) (Local Repository) 和遠(yuǎn)程倉(cāng)庫(kù) (Remote Repository) 被認(rèn)為是四大核心概念。今天讓我們深入了解這些神秘的組成部分,揭開(kāi)它們的面紗,讓你能夠更好地利用Git來(lái)管理項(xiàng)目。

Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng),Git 專欄,git

上圖相信大家再熟悉不過(guò),這是我從?Git 基本操作 | 菜鳥(niǎo)教程?直接貼過(guò)來(lái)的,網(wǎng)上也有很多類似的圖解...這個(gè)關(guān)系圖主要介紹這四個(gè)區(qū)之間的關(guān)系,以及它們之間的 git 基本操作命令。在這個(gè)的基礎(chǔ)上我將結(jié)合不同的文件、目錄重點(diǎn)解釋:workspace、staging area、local repository 到底存在我們自己電腦的何處,以及它們內(nèi)部是如何關(guān)聯(lián)運(yùn)轉(zhuǎn)的。希望看完你能有所收獲。


2. Basic Concept 基本概念

工作區(qū) (Work Space):是在電腦文件系統(tǒng)中能看到的項(xiàng)目目錄。它包含項(xiàng)目的實(shí)際文件,你在工作區(qū)進(jìn)行的修改會(huì)影響到這些文件。比如,你新創(chuàng)建了一個(gè)文件夾,git init 命令以后它就成為了一個(gè) git 目錄,然后你在文件夾里修改了一個(gè) readme.txt 文件,也就是所謂的在工作區(qū)修改了它,這個(gè)很好理解。

暫存區(qū) (Index/ Staging Area):是一個(gè)中間區(qū)域,用于暫存工作區(qū)中的改動(dòng),但這些改動(dòng)還沒(méi)有提交到本地倉(cāng)庫(kù)。在進(jìn)行版本控制時(shí),你需要明確地將修改添加到暫存區(qū),這相當(dāng)于一次“快照”,在提交到本地倉(cāng)庫(kù)之前,你可以對(duì)這次“快照”進(jìn)行進(jìn)一步的調(diào)整。這個(gè)區(qū)域比較抽象,我們暫時(shí)不需要看到它,只用記住在提交到本地倉(cāng)之前,先添加到這兒就行

本地倉(cāng)庫(kù) (Local Repository):是存儲(chǔ)在自己計(jì)算機(jī)本地的版本庫(kù),包含了完整的項(xiàng)目歷史數(shù)據(jù)。執(zhí)行 git commit 命令后會(huì)將暫存區(qū)的內(nèi)容添加到這里,git 會(huì)保存為一個(gè)新的提交,并更新本地倉(cāng)庫(kù),這樣就形成了項(xiàng)目的版本歷史。這個(gè)區(qū)域也比較抽象,暫時(shí)不用擔(dān)心

遠(yuǎn)程倉(cāng)庫(kù) (Remote Repository):是位于網(wǎng)絡(luò)上的 git 倉(cāng)庫(kù),通常托管在像 GitHub、GitLab 或 Bitbucket 等服務(wù)提供商上。遠(yuǎn)程倉(cāng)庫(kù)用于協(xié)作和備份。多個(gè)開(kāi)發(fā)者可以共享同一個(gè)遠(yuǎn)程倉(cāng)庫(kù),每個(gè)人可以將自己的改動(dòng)推送到遠(yuǎn)程倉(cāng)庫(kù),從而實(shí)現(xiàn)協(xié)同開(kāi)發(fā)。同時(shí),遠(yuǎn)程倉(cāng)庫(kù)也提供了項(xiàng)目的備份和存檔。


3. Further Exploration 進(jìn)一步探索

其實(shí),在我們的電腦上,git 工作區(qū)是工作區(qū)、暫存區(qū)和本地倉(cāng)的統(tǒng)稱...現(xiàn)在我們用圖文形式開(kāi)始解釋,以 Mac 電腦為例,Windows 基本思路一致。

3.1 Git Structure 文件結(jié)構(gòu)

首先我們從 git 文件夾結(jié)構(gòu)入手,比如我們創(chuàng)建了一個(gè)文件夾 learnGit 并且使用 git init 命令初始化成一個(gè) git 文件夾,里面有一個(gè) readme.txt 文件,那么 readme.txt 其實(shí)就處在該 git 文件夾的工作區(qū),這點(diǎn)很好理解對(duì)吧。

Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng),Git 專欄,git

此時(shí)如果我們?cè)?learnGit 目錄中使用 command + shift + . 快捷鍵 (顯示隱藏文件),會(huì)出現(xiàn)一個(gè) .git 文件夾,這就是我們所謂的本地版本庫(kù),它是 git 版本控制系統(tǒng)用于存儲(chǔ)倉(cāng)庫(kù)元數(shù)據(jù)和對(duì)象的目錄,更是 git 的核心。它包含了 git 倉(cāng)庫(kù)的全部信息,包括版本歷史、分支、標(biāo)簽、配置等。

Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng),Git 專欄,git

3.2 Key folder?隱藏文件 .git

.git 文件夾是Git版本庫(kù)的核心,它使得Git能夠追蹤文件的更改、管理分支、記錄提交歷史等。這個(gè)文件夾通常位于項(xiàng)目的根目錄下。在通常情況下,用戶不太需要直接操作這個(gè)文件夾,而是通過(guò)Git命令來(lái)與版本庫(kù)進(jìn)行交互。為了更好地了解 git,一起來(lái)看看以下幾個(gè)重要的文件及文件夾。

Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng),Git 專欄,git

3.2.1 index 文件

沒(méi)錯(cuò),通過(guò)名字不難看出 index 文件實(shí)際上就存儲(chǔ)了將被包含在下一次提交中的文件信息,我們可以理解為這就是 Staging Area 即暫存區(qū)的內(nèi)容。這就是為什么說(shuō)暫存區(qū)的內(nèi)容其實(shí)也被包括在工作區(qū)。

3.2.2?HEAD 文件?(*)

指向當(dāng)前所在分支的最新提交,當(dāng)前表明我們?cè)诒镜氐?main 分支,如果我們切換到另一本地分支,比如 temp,那么這個(gè) HEAD 文件就會(huì)顯示 ref: refs/heads/temp?(之后演示的內(nèi)容原理都和 main 分支一樣)。Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng),Git 專欄,gitHEAD 文件的內(nèi)容是一個(gè)路徑文件,我們打開(kāi)這個(gè)路徑下的main文件 .git/refs/heads/main

Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng),Git 專欄,git顯示為一段 hash 碼,我們先不要關(guān)掉這個(gè)文件,等下看這個(gè) hash 碼和誰(shuí)能對(duì)應(yīng)上

3.2.3 logs 文件夾?(*)

由文件夾名字不難看出這是一個(gè)用于存放記錄日志的目錄,logs 文件夾下又包括一個(gè) HEAD 以及 refs 文件夾,如下圖所示

Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng),Git 專欄,git

與上一個(gè) HEAD 文件不同,這個(gè) HEAD 文件在 logs 文件夾下,它主要記錄的是 'HEAD'?引用的變化,即當(dāng)前所在的分支或提交的變化??捎糜谟涗浄种袚Q,版本回退,提交等日志。比如每次切換分支或提交時(shí),都會(huì)在這個(gè)文件中生成一條記錄,包括變化的時(shí)間、舊的 HEAD 引用的位置、新的 HEAD 引用的位置等信息。

refs 文件夾中包含 heads 和 remotes 兩個(gè)文件夾,remotes 很明顯是關(guān)于遠(yuǎn)程倉(cāng)的,我們主要來(lái)看看 heads。heads 文件夾中包含一個(gè) main 文件。這個(gè)文件是用于記錄本地特定分支的引用變化,每次該分支發(fā)生變化時(shí),都會(huì)在這個(gè)文件中生成一條記錄,包括變化的時(shí)間、舊的分支位置、新的分支位置等信息。

我們用文本編輯器打開(kāi)這個(gè) .git/logs/refs/heads/main 文件

Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng),Git 專欄,git

我們發(fā)現(xiàn)最后的 hash 碼和之前那個(gè)對(duì)應(yīng)上了!?

.git/HEAD 指向的?.git/refs/heads/main 哈希碼 ==?.git/logs/refs/heads/main 最后的哈希碼

我們知道 HEAD 表示當(dāng)前分支提交的最新版本,上面這個(gè)例子表示,我們目前所在的本地?main 分支上最新提交版本對(duì)應(yīng)的 reference (快照) 是 ece57b94dd97a....5896 這個(gè) Hash 碼,由此我們得出結(jié)論,在獲取歷史提交版本時(shí)是以?commit 對(duì)應(yīng)的 Hash 碼作為依據(jù)找到對(duì)應(yīng)的提交版本,這個(gè) Hash 碼在 .git/logs 日志中可以找到。?

可是,有了 Hash 碼還不夠,我們還要根據(jù)這個(gè) Hash 碼找到具體的提交內(nèi)容,那么具體的提交內(nèi)容存放在哪呢?

3.2.4 objects 文件夾?(*)

objects 就是我們的本地對(duì)象庫(kù),它的作用是存儲(chǔ)所有的 git 對(duì)象,如提交內(nèi)容、樹(shù)(目錄)、Blob(文件)等。所以如果我們要依據(jù) Hash 碼找到實(shí)際的提交內(nèi)容,就要拿著 logs 文件夾中存儲(chǔ)的?Hash 碼來(lái) objects 文件夾取。在這個(gè)目錄中,git 會(huì)根據(jù)哈希值的前兩個(gè)字符將對(duì)象分組存儲(chǔ)。每個(gè)提交對(duì)象的內(nèi)容會(huì)被壓縮、存儲(chǔ)在一個(gè)以哈希值命名的文件中。如果對(duì)象內(nèi)容有變化,git 會(huì)生成新的哈希值。

Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng),Git 專欄,git

打開(kāi)這個(gè) ec 文件夾就能看到,我們最后一次提交的具體內(nèi)容了,這個(gè)內(nèi)容是以之前那個(gè) Hash 碼命名的。很巧的是,我們上一次的提交和最新的提交 Hash 碼開(kāi)頭差不多,所以 git 通過(guò)計(jì)算前兩位 hash 碼將兩者都放在了這個(gè)文件夾中。Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng),Git 專欄,git


4. Conclusion 總結(jié)

到此我們就知道了工作區(qū)、暫存區(qū)、本地倉(cāng)庫(kù)在自己的電腦到底是如何存在的,以及他們之間是如何運(yùn)作產(chǎn)生聯(lián)系的,本地倉(cāng)庫(kù)就是 .git/objects 文件夾,暫存區(qū)就是 index,HEAD 指向當(dāng)前本地分支最新的提交,這個(gè)提交對(duì)應(yīng)有一個(gè) commit id, 以 Hash 值表示,獲取或者推送某個(gè)提交需要拿著 Hash 值去本地倉(cāng)庫(kù)也就是 .git/objects 里找到具體的提交內(nèi)容。

4.1 關(guān)系圖

下圖是我總結(jié)出的工作區(qū)、暫存區(qū)及本地版本倉(cāng)庫(kù)的關(guān)系圖 (以本地 learnGit 為例),供大家參考。

Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng),Git 專欄,git

感謝各位的閱讀,如果你覺(jué)得我的博客對(duì)你有所幫助或啟發(fā),歡迎點(diǎn)贊收藏??~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-802263.html

到了這里,關(guān)于Git詳解(帶圖) --- 本地電腦的工作區(qū)、暫存區(qū)、本地倉(cāng)與遠(yuǎn)程倉(cāng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Git - 基于IDEA/命令回滾工作區(qū)和暫存區(qū)的修改

    Git - 基于IDEA/命令回滾工作區(qū)和暫存區(qū)的修改

    1. 使用命令行回滾工作區(qū)的修改(回滾文件的修改) 可能有一天我正在寫(xiě)代碼,寫(xiě)了很久發(fā)現(xiàn)寫(xiě)錯(cuò)了,想恢復(fù)到一開(kāi)始的狀態(tài),一個(gè)笨辦法就是把剛剛寫(xiě)的代碼一行一行的刪除,不過(guò)這種方式成本太高,我們可以通過(guò)命令來(lái)回滾 工作區(qū)的代碼修改: 測(cè)試: ① Test.java文件內(nèi)

    2023年04月08日
    瀏覽(18)
  • Git--本地修改文件暫存工作區(qū)和恢復(fù)至工作區(qū)

    Git--本地修改文件暫存工作區(qū)和恢復(fù)至工作區(qū)

    當(dāng)克隆一個(gè)項(xiàng)目到本地之后,經(jīng)常需要修改配置文件,那如何做到下次再更新代碼,不重復(fù)修改配置文件??赏ㄟ^(guò)暫存工作區(qū)內(nèi)容進(jìn)行恢復(fù)。 注意:默認(rèn)恢復(fù)的就是最新一次stash 說(shuō)明:會(huì)展示所有的stash列表 git stash apply 暫存名 說(shuō)明:通過(guò)查看stash列表,把指定的stash記錄刪除

    2024年02月11日
    瀏覽(35)
  • git在工作區(qū)和本地庫(kù)的操作命令

    git在工作區(qū)和本地庫(kù)的操作命令

    ?本文介紹一些開(kāi)發(fā)時(shí),常用的在工作區(qū)和本地庫(kù)之間的操作命令 工作樹(shù)的修改內(nèi)容要提交到本地庫(kù),首先需要先添加到緩存區(qū)stage,在commit到本地庫(kù)。 你開(kāi)發(fā)了一段時(shí)間,可能已經(jīng)忘記了修改過(guò)那幾個(gè)文件 可以使用 git status 查看 工作區(qū)和緩存區(qū)的內(nèi)容 ,即修改過(guò)的文件和

    2024年02月15日
    瀏覽(17)
  • 01 - 工作區(qū)、暫存區(qū)、版本庫(kù)、遠(yuǎn)程倉(cāng)庫(kù) - 以一次連貫的提交操作為例

    01 - 工作區(qū)、暫存區(qū)、版本庫(kù)、遠(yuǎn)程倉(cāng)庫(kù) - 以一次連貫的提交操作為例

    查看所有文章鏈接:(更新中)GIT常用場(chǎng)景- 目錄 以一次連貫的提交操作為例。 Git的工作區(qū)也就是我們平時(shí)編輯代碼的目錄文件夾。 新建一個(gè)kongfu_person.txt文件,工作區(qū)的變化:

    2024年02月13日
    瀏覽(18)
  • Git——工作區(qū)管理

    Git——工作區(qū)管理

    如何管理工作目錄,以便用戶可以更高效地新建提交。如何在處理工作區(qū)和暫存區(qū)文件的過(guò)程中修復(fù)錯(cuò)誤,以及如何修復(fù)最近一次提交記錄中的問(wèn)題;同時(shí)還會(huì)了解到如何安全地使用暫存機(jī)制和多個(gè)工作目錄處理工作流中的中斷問(wèn)題。 主要內(nèi)容有以下幾點(diǎn): 忽略文件:特意

    2024年02月03日
    瀏覽(18)
  • git工作區(qū)刪除了文件想更新回來(lái)

    git工作區(qū)刪除了文件想更新回來(lái)

    刪除了本地dev分支的幾個(gè)文件,本地dev對(duì)應(yīng)遠(yuǎn)端dev分支,想更新回來(lái) 法一、如果你知道文件夾名稱或者文件名稱: 法二、工作區(qū)的修改,其中就包括刪除,這其實(shí)都會(huì)被git認(rèn)為正常的操作,即使是你誤操作 而針對(duì)你的操作,git提供了回退操作,如下圖 法三,直接將本地庫(kù)整

    2024年02月11日
    瀏覽(22)
  • git 將其它分支的文件檢出到工作區(qū)

    git 將其它分支的文件檢出到工作區(qū)

    主要是使用如下命令: 覆蓋與 pathspec 匹配的文件的內(nèi)容。當(dāng)沒(méi)有給出 tree-ish (通常是一個(gè)commit)時(shí),用 index 中的內(nèi)容覆蓋工作樹(shù)。當(dāng)給出 tree-ish 時(shí),用 tree-ish 處的內(nèi)容同時(shí)覆蓋 index 和工作樹(shù)。 由于前一個(gè)的合并失敗,index 可能包含未合并的條目。默認(rèn)情況下,如果您試圖從

    2023年04月09日
    瀏覽(21)
  • idea將文件移出git的工作區(qū)

    idea將文件移出git的工作區(qū)

    之前使用idea在commit項(xiàng)目時(shí)候,忘記添加.gitignore文件了,導(dǎo)致提交了很多無(wú)關(guān)的文件進(jìn)入遠(yuǎn)程倉(cāng)庫(kù),網(wǎng)上有教程是使用git - reset head 方法,但是這個(gè)方法只是將上一次的commit文件覆蓋當(dāng)前的暫存區(qū)文件,而非移除暫存區(qū)文件,所以沒(méi)有用 ? 但是在idea工具好像并沒(méi)有提供將文件移

    2024年02月13日
    瀏覽(19)
  • VS Code工作區(qū)用法

    VS Code工作區(qū)用法

    背景 VS Code可以通過(guò)\\\"文件/打開(kāi)文件夾\\\"來(lái)打開(kāi)本地項(xiàng)目,但是想要打開(kāi)多個(gè)項(xiàng)目便需要來(lái)回切換,比較費(fèi)勁。此時(shí)就可以使用工作區(qū)功能,將不同的項(xiàng)目放置到同一個(gè)工作區(qū)中,這樣切換項(xiàng)目的時(shí)候就會(huì)非常方便。 操作方法 打開(kāi)其中一個(gè)項(xiàng)目 執(zhí)行命令:文件 》 打開(kāi)文件夾

    2024年01月25日
    瀏覽(18)
  • VScode 工作區(qū)配置 和 用戶配置

    VScode 工作區(qū)配置 和 用戶配置

    通常不同的項(xiàng)目都有不同的配置,我一般都是使用eslint和prettier一起用,所以經(jīng)常會(huì)有這幾個(gè)文件: 這里簡(jiǎn)單介紹一下這幾個(gè)文件的作用吧。 一般有兩個(gè)文件,extensions.json和settings.json。 extensions.json 文件是用來(lái)配置推薦安裝的 VS Code 插件的文件。在這個(gè)文件中,你可以列出你

    2024年01月24日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包