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

article/2025/9/11 17:26:38

深入理解git原理

1:git工作模式
在这里插入图片描述
基本步骤:
1.workspace 本地工作空间add命令 提交到本地缓存
2、localcache本地缓存commit命令提交到本地仓库
3、localRepository本地仓库push命令提交到远程仓库
拉取步骤:
clone 克隆到本地仓库
checkout命令切换分支

git初始化

安装-----Google it
为每一台电脑配置身份信息
$ git config --global user.name “Your Name”
$ git config --global user.email “email@example.com”
把某个目录变成可以让git管理到的目录(创建版本库)
git init命令

git基本命令

把内容输入到一个文件
echo “xxxx” > xxxx
把工作空间的某个文件添加到本地cache
git add xxxx
把工作空间的所有内容添加到本地cache
git add -A
把本地cache当中的某个文件提交到本地库
git commit -m “xxxx”
把本地cache全部提交到本地仓库
git commit -am “xxxx”
cache ---->work file恢复一个文件 file1 file2 恢复两个文件 .恢复所有文件
git checkout readme.txt
git状态查询
git status
查看不同的地方 默认查看工作区和cache
git diff --cached 比较cache和Repository
git diff HEAD 工作区和最新的Resository
git diff commit-id 工作区和制定的repository
git diff --cached commit-id
git diff --commit-id commit-id
git diff
reset 顾名思义 (HEAD~100)
git reset HEAD^
git的日志
git log git log --pretty=oneline
oh my pretty pretty boy i love you
git reflog 查看历史命令
git rm --cached file_path
git rm
git mv
远程仓库的克隆到本地库
git clone
关联远程仓库
git remote add
推送到远程仓库
git push
拉取远程仓库的内容
git pull
查看当前分支 -a查看所有分支 -av 查看所有分支的信息 -avv 查看所有分支的信息和关系
git branch
创建一个分支 基于当前分支创建分支
git branch xxx
基于oldType创建分支
git branch newBranch oldType
切换分支
git checkout 分支的名字
删除分支
git branch -d xxx
查看文件内容
git cat-file -p commitid
查看对象类型 blob commit tree
git cat-file -t commitid

git分支概念详解

查看分支:
在这里插入图片描述
创建分支的四种方式:
1、基于当前分支创建分支 (git 默认方式)
在这里插入图片描述
2、基于远程分支创建分支

test3基于远程分支remotes/origin/2.0而创建?
怎么证明呢?
如下图可以看见test3对应的commit ID与remotes/origin/2.0是一模一样的
在这里插入图片描述

3、基于新分支创建分支
在这里插入图片描述
4、基于提交创建分支

得出结论:其实都是基于commit创建分支(后面原理会重点分析说明
合并分支
一定要切换到被合并的分支上去合并
比如说A要合并A1
那么先要切换到A1,然后在A1上面执行git merge A

git原理解析

git 核心就是基于指针与元数据拼接完成 文件的组合

git中有四个对象
1、Blob 对象
用于存储的是文件内容,压缩的
文件名字是根据内容算出的一个hash值
2、tree对象
指正指向blob对象与子tree对象
3、commit对象
存放作者提交者注释
指向一个 tree 的指针
4、tag对象(相当于分支)
怎么证明有这几个对象呢?
直接上代码,不多解释:
1、证明Blob 对象:
a:执行git init会在文件夹中生成一个.git文件(需要设置显示隐藏文件)
b:echo “git1” > git1.txt 将git1写入到git1.txt文件夹中

在这里插入图片描述
c:执行git add -A 将文件提交到本地缓存会生成一个7f文件夹(里面储存由hach码组成的文件,git压缩并储存了我们提交git1.txt文件的内容)
在这里插入图片描述
D:证明git储存的文件类型,与内容!
在这里插入图片描述
2:证明 tree 与 commit对象
1)执行commit命令 git又会帮我们生成 commit 与 tree的文件夹
在这里插入图片描述
2)证明tree 与 commit对象的存在
在这里插入图片描述
C:从下图可以发现,commit对象内容指向tree对象的指针ID(还有作者信息以及提交的注释) tree对象指正的ID又指向blob对象的ID(由于这里没有子文件夹所以没有子Tree读者可以自己尝试
在这里插入图片描述
在这里插入图片描述

总结

上图可以看出
作者信息+注释信息+文件结构(子tree)+文件内容 不就构成了我们完整的文件?
所以得出:git是将文件分成多个元数据组成。我们平时操作,也只是操作commit
在这里插入图片描述
在这里插入图片描述
其实git只是操作指针,所以能做到高效率。多分支。。切换分支,仅仅只是改变master文件中的指针ID而已。让它指向另一个commid而已。。这也是与svn最大的不同。(ps:总结得不是很好,通过以上的示例希望能让读者明白一些吧)


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

相关文章

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…

Git 的原理

文章目录 什么是 Git&#xff1f;版本库是由什么构成的版本库&#xff08;项目文件夹&#xff09;的构成版本库&#xff08;对象数据库&#xff09;的结构提交的组成SHA1 算法 总结 暂存区什么样的文件&#xff0c;不应该上传到版本库中&#xff1f;查看暂存区清空暂存区选择性…

Git学习之git原理

git对象 当我们使用git进行版本管理时&#xff0c;git会将我们的文件和目录结构转化成git方便操作的数据(git对象)&#xff0c;然后再对这些git对象进行管理&#xff0c;从而实现版本管理的目的&#xff0c;这些git对象存放在git的对象库中。 我们眼中的文件会被git转化成&qu…

Git 必知必会:原理剖析

作为程序员&#xff0c;最常用的版本管理工具便是 Git。但我相信大多数人和我一样&#xff0c;从没有认真了解过其具体实现的原理。但了解 Git 的原理&#xff0c;能有助于我们工作更好的使用 Git。下面&#xff0c;让我们一起来了解 Git 中的一些概念&#xff0c;以及实现。 一…