Git | 面试官问你 Git 原理,你能回答得出来吗?

article/2025/9/11 15:56:53

文章目录

  • 原创声明
  • 前言
  • 一、Git 简单介绍
  • 二、解开 Git 在日常上班操作中的神秘面纱
    • 2.1 初始化仓库
      • git init
    • 2.2 第n次提交
      • git add xxx
      • git status
      • git commit -m "xxx"
    • 2.3 分支
      • 2.3.1 创建分支 git branch xxx
      • 2.3.2 切换分支 git checkout
      • 2.3.3 分支中提交
  • 总结
  • 参考资料
  • 授权须知

原创声明

本文为 HinGwenWoong 原创,如果这篇文章对您有帮助,欢迎转载,转载请阅读文末的【授权须知】,感谢您对 HinGwenWoong 文章的认可!


前言

我们每天上班都要用到 Git,每次我们都输入那几个常用的命令,但是你知道这些命令到底执行了什么操作吗?下面我结合官方的文档和我自己的理解,和大家解释下每个命令到底执行了什么操作。

我是 HinGwenWoong,一个有着清晰目标不停奋斗的程序猿,热爱技术,喜欢分享,码字不易,如果帮到您,请帮我在屏幕下方点赞 👍 ,您的点赞可以让技术传播得更远更广,谢谢!

一、Git 简单介绍

  • Git 采用 【分布式管理系统】:将仓库里面的所有文件都镜像到本地,可以极大防止服务器的磁盘坏了导致代码丢失,还可以便捷进行分支开发
    在这里插入图片描述

  • 每次提交(commit)的时候,都是将修改的文件保存为一个快照并保存这个快照的索引。
    快照索引

  • Git 操作全程都是本地化,不需要担心网络不通不能保存副本;

  • Git 有文件校验,在储存前都会对文件计算 SHA-1 散列 校验和,以校验和来进行引用。因为有校验和的存在,所以无需担心文件在传输过程中损坏。

在这里插入图片描述

二、解开 Git 在日常上班操作中的神秘面纱

该教程使用的 Git 版本为 V2.28.0.windows.1
在这里插入图片描述

2.1 初始化仓库

git init

  • 每个新建的仓库,都要上来无脑输入一个 git init 。在 git 操作界面输入 git init 创建 git 所需要用到的文件
    在这里插入图片描述
  • 输入指令之后可以看到项目文件夹下面有 .git 文件夹生成,这个文件夹里面几乎包含了所有 Git 储存和操作的东西;如果你想备份一个项目,直接复制这个文件即可。
    在这里插入图片描述
  • 打开.git 文件夹,我们可以看到如下文件树:在这里插入图片描述
  • 注意:Git的版本不同,文件结构也会不同。
  • 各个文件及目录含义如下
文件/目录 名作用
hooks包含客户端或服务端的钩子脚本(hook scripts)
info包含一个全局性排除(global exclude)文件 , 用以放置那些不希望被记录在 .gitignore文件中的忽略模式(ignored patterns)
objectsGit 的核心组成部分,存储所有数据内容
refsGit 的核心组成部分,存储指向数据(分支、远程仓库和标签等)的提交对象的指针
config包含项目特有的配置选项
description仅供 GitWeb 程序使用,我们无需关心
HEADGit 的核心组成部分,指向目前被检出的分支
index (尚未创建)保存暂存区信息

2.2 第n次提交

git add xxx

  • 我们创建了一个仓库,并对仓库进行初始化之后,我们下一步要对文件进行跟踪。我们可以通过 git add 来指定需要跟踪的文件;
  • 我在文件夹下创建了一个新的文件 README.txt

在这里插入图片描述

  • 我们使用命令对其进行跟踪
    在这里插入图片描述
  • 执行之后,可以看到 .git 里面多了 index 文件
    在这里插入图片描述
  • 打开可以看到暂存区(index)区的文件
    在这里插入图片描述

git status

  • 使用 git status 命令查看哪些文件处于什么状态:
    在这里插入图片描述
  • 这里显示有一个新的文件README.txt ,正是我刚刚加入的新文件,并且可以看到已被 Git 追踪
  • 如何看是否被追踪,只要看 Changes to be committed 下面显示的文件即可,在其下面的文件都是已经暂存的状态了

git commit -m “xxx”

我们将这次需要提交的文件使用 add 进行暂存之后,我们可以提交了,使用命令提交:

在这里插入图片描述

  • 我们可以看到 commit 之后会有个结果反馈:当前的分支名(master),本次提交的完整 SHA-1 校验和是什么(8db4232),以及在本次提交中,有多少文件修订过,多少行添加和删改过
    在这里插入图片描述

  • .git 目录下可以看到多了 COMMIT_EDITMSG 文件 和 logs 目录
    在这里插入图片描述

  • 打开 COMMIT_EDITMSG 文件可以看到是我刚刚时候加上的消息
    在这里插入图片描述

  • refs 文件中,可以看到当前分支(master
    在这里插入图片描述

  • 并且可以看到目前该分支中已经提交的最新文件的完整 SHA-1 校验和,这里的是分支 master 的一个Git 引用
    在这里插入图片描述

  • 其对应 objects 中的对应文件,这里是 Git 进行存储的内容,每一次 commit 都会进行一次存储

在这里插入图片描述

  • 并且在 logs 目录中进行记录
    在这里插入图片描述

2.3 分支

2.3.1 创建分支 git branch xxx

  • 首先查看目前分支情况
    在这里插入图片描述

  • 可以看到目前只有一个分支 master

  • 创建一个 dev 的分支,并查看,可以看到成功创建 dev 分支

在这里插入图片描述

  • 可以在 .git/refs 目录中看到多出了一个新的文件 dev
    在这里插入图片描述
  • 打开 dev 文件可以看到创建该分支的最新文件的引用 SHA-1 校验和
    在这里插入图片描述
  • 打开文件 .git/HEAD,可以看到目前的引用分支名(master
    在这里插入图片描述

2.3.2 切换分支 git checkout

  • 在命令行进行分支的切换,并使用 git branch 检查当前所在分支:
    在这里插入图片描述
  • 切换成功之后,打开文件 .git/HEAD 可以看到里面的引用文件变成了 dev
    在这里插入图片描述

2.3.3 分支中提交

新建一个文件 SecondFile.txt,并且加入版本管理,并进行提交
在这里插入图片描述

  • 可以在 .git/logs/refs/heads/dev 中看到 上次提交的校验和、本次提交的校验和、提交人、邮箱、时间等信息
    在这里插入图片描述

总结

这篇文章通过从底层 .git 目录里面的文件变化,来对我们平常上班时候使用到的 Git 命令进行了解释,能够让大家对 Git 命令的操作有个更加深入的理解。

我是 HinGwenWoong,一个有着清晰目标不停奋斗的程序猿,热爱技术,喜欢分享,码字不易,如果帮到您,请帮我在屏幕下方点赞 👍 ,您的点赞可以让技术传播得更远更广,谢谢!


参考资料

  • Git官方文档

授权须知

  1. 原创文章在推送两天后才可进行转载
  2. 转载文章,禁止声明原创
  3. 不允许直接二次转载,转载请根据原文链接联系作者
  4. 若无需改版,在文首清楚标注作者及来源/原文链接,并删除【原创声明】,即可直接转载。
    但对于未注明转载来源/原文链接的文章,我将保留追述的权利。

作者:HinGwenWoong
一个有着清晰目标不停奋斗的程序猿,热爱技术,喜欢分享,共同进步!
CSDN: HinGwenWoong
原文链接:Git | 面试官问 Git 原理你可以回答得出来吗?

  1. 若需要修改文章的排版,请根据原文链接联系作者
  2. 再次感谢您的认可,转载请遵守如上转载须知!

http://chatgpt.dhexx.cn/article/QFURyBZ7.shtml

相关文章

Git概念及工作原理总结

Git是分布式版本控制系统。Github和华为等均使用Git作为代码管理工具。之前在工作中比较常用到的是克隆、代码提交拉取、解决回合冲突、代码回滚等。在实际的工作中,可能回合时冲突及版本回退的情况较多,下文将着重介绍这两点。本文不涉及Git的安装等&am…

Git 天天用 但是 Git 原理你了解吗?

前言 做技术一定要知其然知其所以然,意思就是:知道它是这样的,更知道它为什么是这样的。我主要通过4块内容来简单介绍 Git 原理是什么样的。这4块内容如下: Git 存储目录结构介绍Git 是如何存储的Git 的对象Git引用 当然 Git 原…

(一篇就够)git原理深入理解

深入理解git原理 1:git工作模式 基本步骤: 1.workspace 本地工作空间add命令 提交到本地缓存 2、localcache本地缓存commit命令提交到本地仓库 3、localRepository本地仓库push命令提交到远程仓库 拉取步骤: clone 克隆到本地仓库 checkout…

git原理笔记(一)

git原理笔记(一) 这个笔记是对于git内部原理的一个理解。网上很多关于git的用法的教程。这里推荐廖雪峰的git教程。 这里主要记录如下的内部原理的理解 1. git如何存储 2. git如何管理版本 一. git如何存储 常常在使用git的过程中&#…

git工作原理

一. git工作原理 二. git分支标准流程 三. git工具:sourcetree 待续知识分享

git原理和常用命令

git git介绍git工作流程git的几个核心概念 git常用命令参考资料 git介绍 git-分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 git特点 优点: 适合分布式开发,强调个体; 公共服务器压力和数据量都不会太…

Git分支原理

Git分支原理 前言 最近工作由SVN换成Git了,不由地想探寻一下这两种版本控制工具的差别到底在哪里,于是有了这篇笔记。 Git保存方式 Git和SVN的差别主要就在于对待数据的方式。 SVN将存储的信息看作是一组基本文件和每个文件随时间逐步累积的差异&…

git fetch工作原理

背景 相信大家都知道git pull命令相当于git fetch加git merge。那么直接使用git pull和分开使用有什么区别呢&#xff1f;要解答这个问题首先要想了解git fetch的工作原理是什么样的。 git fetch的工作原理 先讲一下什么是远程跟踪分支。远程跟踪分支以 <remote>/<…

Git原理入门解析

前言: 自己第一次听到Git应该是一年前了,当时很懵,不知道它是干啥的,在网上搜索了很多文章,一直不是太明白;今天我来记录一下自己对Git的学习,如果对其他童鞋有所帮助,我荣幸之至! 一、Git 简析 Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一)。…

Git原理详解与实用指南

文章目录 上手 1&#xff1a;新公司用 Git 管理代码&#xff0c;怎么快速上手&#xff1f;上手2&#xff1a;团队工作的基本工作模型进阶1&#xff1a;HEAD、master与branch进阶2&#xff1a;push的本质进阶3&#xff1a;merge&#xff1a;合并commits进阶4&#xff1a;Feature…

最详细的Git原理总结+如何解决冲突

原文路径是https://www.cnblogs.com/cb0327/p/5066685.html 目录 1.提交 代码到远程仓库2.将远程仓库代码更新到本地3.更新到本地仓库时&#xff0c; 出现冲突&#xff0c;解决冲突后记&#xff1a; 正文 本文背景&#xff0c;在实际项目中使用git已有一年&#xff0c;发现不少…

图解git工作原理

git 是一个能处理各种大小项目的开源版本控制系统&#xff0c;本文想通过两张图来简单说明git的工作原理 从上图可以知道git分四个部分来记录文件状态 working directory:工作区&#xff0c;开发者直接修改的本地代码树 staging area&#xff1a;暂存区&#xff0c;用于临时保存…

git原理解释

工作区域 Git本地有三个工作区域&#xff1a;工作目录&#xff08;Working Directory&#xff09;、暂存区&#xff08;Stage/Index&#xff09;、本地仓库&#xff08;Repository或Git Directory&#xff09;。如果在加上远程的Git仓库&#xff08;Remote Directory&#xff0…

git的基本原理

刚刚接触到git和github&#xff0c;整理一部分相关原理帮助自己理解git命令和本地-远程的操作。 我们将这部分学习分为三部分&#xff1a;&#xff08;1&#xff09;本地仓库相关操作&#xff08;2&#xff09;远程仓库相关操作&#xff08;3&#xff09;本地-远程交互操作 本地…

Git原理及操作简介

Git原理及操作简介 一、Git是什么 Git是目前世界上最先进的分布式版本控制系统 工作原理 / 流程: Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 二、SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中…

Git 工作原理

Git 工作原理 GIt简介Git 的基本原理Git的目录结构Git对象在之前我们提到过&#xff0c;Git是一套内容寻址&#xff08;content-addressable&#xff09;文件系统&#xff0c;那么Git是怎么进行寻址呢&#xff1f;Git对象的类型包括&#xff1a;BLOB、tree对象、commit对象。 对…

一文搞明白GIT——Git原理解析与常用命令

工作中经常用git&#xff0c;但是不少命令经常使用出现各种各样的问题&#xff0c;也不太理解其中的原理。今天专门总结一下git的原理&#xff0c;理解原理之后想实现什么样的功能直接找相应的命令即可。如有错误和不足&#xff0c;欢迎指正&#xff01; 一、 工作区 使用git…

Git 原理详解及实用指南

Git 原理详解及实用指南 什么是版本控制系统&#xff08;VCS&#xff09; 很多人认为 Git 难以理解的第一个门槛在于&#xff1a;所谓的「Git 是一个分布式版本控制系统」这句话的具体含义不够清楚。其实分布式版本控制系统&#xff08;Distributed Version Control System - …

图解git原理

用了这么久git&#xff0c;你有没有想过git的原理是什么&#xff1f;为什么git做回退这么快&#xff1f;创建、切换分支也这么快&#xff1f;git的工作区、暂存区、本地仓库、远程仓库都分别对应怎样的实体&#xff1f;打开一个git仓&#xff0c;看看目录下的.git文件夹&#x…