当前位置:   article > 正文

Git详解(带图) --- 本地电脑的工作区、暂存区、本地仓与远程仓_git 工作区域_git暂存区位置

git暂存区位置

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

上图相信大家再熟悉不过,这是我从 Git 基本操作 | 菜鸟教程 直接贴过来的,网上也有很多类似的图解…这个关系图主要介绍这四个区之间的关系,以及它们之间的 git 基本操作命令。在这个的基础上我将结合不同的文件、目录重点解释:workspace、staging area、local repository 到底存在我们自己电脑的何处,以及它们内部是如何关联运转的。希望看完你能有所收获。


2. Basic Concept 基本概念

工作区 (Work Space):是在电脑文件系统中能看到的项目目录。它包含项目的实际文件,你在工作区进行的修改会影响到这些文件。比如,你新创建了一个文件夹,git init 命令以后它就成为了一个 git 目录,然后你在文件夹里修改了一个 readme.txt 文件,也就是所谓的在工作区修改了它,这个很好理解。

暂存区 (Index/ Staging Area):是一个中间区域,用于暂存工作区中的改动,但这些改动还没有提交到本地仓库。在进行版本控制时,你需要明确地将修改添加到暂存区,这相当于一次“快照”,在提交到本地仓库之前,你可以对这次“快照”进行进一步的调整。这个区域比较抽象,我们暂时不需要看到它,只用记住在提交到本地仓之前,先添加到这儿就行。

本地仓库 (Local Repository):是存储在自己计算机本地的版本库,包含了完整的项目历史数据。执行 git commit 命令后会将暂存区的内容添加到这里,git 会保存为一个新的提交,并更新本地仓库,这样就形成了项目的版本历史。这个区域也比较抽象,暂时不用担心。

远程仓库 (Remote Repository):是位于网络上的 git 仓库,通常托管在像 GitHub、GitLab 或 Bitbucket 等服务提供商上。远程仓库用于协作和备份。多个开发者可以共享同一个远程仓库,每个人可以将自己的改动推送到远程仓库,从而实现协同开发。同时,远程仓库也提供了项目的备份和存档。


3. Further Exploration 进一步探索

其实,在我们的电脑上,git 工作区是工作区、暂存区和本地仓的统称…现在我们用图文形式开始解释,以 Mac 电脑为例,Windows 基本思路一致。

3.1 Git Structure 文件结构

首先我们从 git 文件夹结构入手,比如我们创建了一个文件夹 learnGit 并且使用 git init 命令初始化成一个 git 文件夹,里面有一个 readme.txt 文件,那么 readme.txt 其实就处在该 git 文件夹的工作区,这点很好理解对吧。

此时如果我们在 learnGit 目录中使用 command + shift + . 快捷键 (显示隐藏文件),会出现一个 .git 文件夹,这就是我们所谓的本地版本库,它是 git 版本控制系统用于存储仓库元数据和对象的目录,更是 git 的核心。它包含了 git 仓库的全部信息,包括版本历史、分支、标签、配置等。

3.2 Key folder 隐藏文件 .git

.git 文件夹是Git版本库的核心,它使得Git能够追踪文件的更改、管理分支、记录提交历史等。这个文件夹通常位于项目的根目录下。在通常情况下,用户不太需要直接操作这个文件夹,而是通过Git命令来与版本库进行交互。为了更好地了解 git,一起来看看以下几个重要的文件及文件夹。

3.2.1 index 文件

没错,通过名字不难看出 index 文件实际上就存储了将被包含在下一次提交中的文件信息,我们可以理解为这就是 Staging Area 即暂存区的内容。这就是为什么说暂存区的内容其实也被包括在工作区。

3.2.2 HEAD 文件 (*)

指向当前所在分支的最新提交,当前表明我们在本地的 main 分支,如果我们切换到另一本地分支,比如 temp,那么这个 HEAD 文件就会显示 ref: refs/heads/temp (之后演示的内容原理都和 main 分支一样)。HEAD 文件的内容是一个路径文件,我们打开这个路径下的main文件 .git/refs/heads/main

显示为一段 hash 码,我们先不要关掉这个文件,等下看这个 hash 码和谁能对应上

3.2.3 logs 文件夹 (*)

由文件夹名字不难看出这是一个用于存放记录日志的目录,logs 文件夹下又包括一个 HEAD 以及 refs 文件夹,如下图所示

与上一个 HEAD 文件不同,这个 HEAD 文件在 logs 文件夹下,它主要记录的是 ‘HEAD’ 引用的变化,即当前所在的分支或提交的变化。可用于记录分支切换,版本回退,提交等日志。比如每次切换分支或提交时,都会在这个文件中生成一条记录,包括变化的时间、旧的 HEAD 引用的位置、新的 HEAD 引用的位置等信息。

refs 文件夹中包含 heads 和 remotes 两个文件夹,remotes 很明显是关于远程仓的,我们主要来看看 heads。heads 文件夹中包含一个 main 文件。这个文件是用于记录本地特定分支的引用变化,每次该分支发生变化时,都会在这个文件中生成一条记录,包括变化的时间、旧的分支位置、新的分支位置等信息。

我们用文本编辑器打开这个 .git/logs/refs/heads/main 文件

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

4KCct2-1713287632523)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/597008
推荐阅读
相关标签
  

闽ICP备14008679号