21张图搞懂Git的原理

Git 的原理 文章目录什么是 Git?版本库是由什么构成的版本库(项目文件夹)的构成版本库(对象数据库)的结构提交的组成SHA1 算法总结暂存区什么样的文件,不应该上传到版本库中?查看暂存区清空暂存区选择性提交版本库管理版本的回滚、复原分支为什么有分支的存在?分支管理:创建、合并、变基创建与删除分支合并分支变基标签(tags)创建标签标签的管理与作用版本库的交互创建克隆版本库裸版本库版本库之间的版本分享抓取 Fetch 操作Pull = Fetch + MergePushGithub思考题 什么是 Git? Git 是一 阅读详情

Git 是程序员学习和工作都离不开发工具,也是非程序员好用的文档版本管理工具。

本文图解 Git 中的最常用命令。如果你稍微理解 Git 的工作原理,这篇文章能够让你理解的更透彻。

原文链接:https://marklodato.github.io/visual-git-guide/index-zh-cn.html

基本用法

21张图搞懂Git的原理

上面的四条命令在工作目录、暂存目录(也叫做索引)和仓库之间复制文件。

  • git add files 把当前文件放入暂存区域。
  • git commit 给暂存区域生成快照并提交。
  • git reset -- files 用来撤销最后一次git add files,你也可以用git reset 撤销所有暂存区域文件。
  • git checkout -- files 把文件从暂存区域复制到工作目录,用来丢弃本地修改。

你可以用 git reset -p, git checkout -p, or git add -p进入交互模式。

也可以跳过暂存区域直接从仓库取出文件或者直接提交代码。

21张图搞懂Git的原理

  • git commit -a 相当于运行 git add 把所有当前目录下的文件加入暂存区域再运行。git commit.
  • git commit files 进行一次包含最后一次提交加上工作目录中文件快照的提交。并且文件被添加到暂存区域。
  • git checkout HEAD -- files 回滚到复制最后一次提交。

约定

后文中以下面的形式使用图片。

21张图搞懂Git的原理

绿色的5位字符表示提交的ID,分别指向父节点。分支用橘色显示,分别指向特定的提交。当前分支由附在其上的HEAD标识。这张图片里显示最后5次提交,ed489是最新提交。main分支指向此次提交,另一个stable分支指向祖父提交节点。

Git原理架构详解 Git是什么?Git是一个开源分布式版本控制系统,可以高速并且有效的处理很小到非常大的项目版本管理。Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开源版本控制软件什么是版本控制?版本控制一般是指程序开发过程中的代码版本,配置文件及说明文档等文件修改变更的管理,版本控制最主要的功能就是追踪文件的修改变更等操作,称之为版本控制!例子-代码公司研发部门接到老板要求开发一套为公司内部运营人员所使用的内部管理系统,公司研发有主管、小张、小王、小徐等四人,项目需求初步定为此套系统需要20 阅读详情

相关推荐

Git安装不是点下一步:2026最新版三端实操与底层原理

Git 是分布式版本控制系统(DVC)的本地实现,其安装本质是部署一套含命令行引擎、凭据管理、跨平台换行符策略和安全认证机制的运行时环境。理解 Git 安装包中 `git` 二进制、`git-credential-manager` 和 `core.autocrlf` 等核心组件,是避免后续 `git --version` 报错、`git clone` 失败或提交乱码的关键。不同平台差异显著:Windows 依赖 MinTTY 终端与 PATH 注册逻辑,macOS 面临 Homebrew 与官网 pkg 的

weixin_33804582的博客 448

从一次‘FTP上传失败’故障排查,彻底搞懂Windows防火墙出站规则的目标端口设定

本文通过一次FTP上传失败故障的排查过程,深入解析了Windows防火墙出站规则的核心逻辑,特别是目标端口设定的重要性。文章详细介绍了故障现象、排查步骤以及Windows防火墙的优先级体系,并提供了生产环境中的最佳实践和扩展应用场景,帮助读者彻底理解并正确配置出站规则。

diche7031的博客 424

Java环境变量配置全攻略:原理、实操与排查指南

环境变量是操作系统为应用程序提供运行参数和可执行文件搜索路径的基础机制,也是Java开发中绕不开的第一道门槛。理解JAVA_HOME、PATH与CLASSPATH各自的作用,是正确配置JDK的关键。JDK作为Java开发工具包,版本选择直接影响开发效率与兼容性。本文从环境变量的底层逻辑切入,结合Windows、macOS和Linux的实操步骤,详细讲解配置细节与验证方法,并针对“java不是内部或外部命令”“javac报错”等高频故障给出排查方案。掌握这一技能后,还能通过临时设置或脚本实现多JDK版本切换,

weixin_32705179的博客 293

Lodash原型链污染漏洞:原理、复现与防御实战

JavaScript原型链是语言实现继承的核心机制,它允许对象通过内部链接访问其原型的属性和方法。然而,当对象属性查找机制被恶意利用时,就会产生原型链污染漏洞。这种漏洞的技术价值在于揭示了深度对象操作函数在处理不可信数据时的安全隐患,可能导致拒绝服务、逻辑绕过甚至远程代码执行。在应用场景中,前端与Node.js开发中常用的配置合并、数据深度拷贝等功能,如果未对用户输入进行严格过滤,就可能成为攻击入口。本文聚焦于Lodash库中CVE-2021-23337漏洞,通过分析其利用原理和提供自动化检测脚本,帮助开发

conghuang7343的博客 383

C/C++面试八股文汇总

以对象管理资源,利用的就是C++构造的对象最终会被对象的析构函数销毁的原则。上述的的申请、使用、释放资源的程序较为简单,但是如果程序很复杂的时候,需要为所有的new 分配的内存delete掉,导致极度臃肿,效率下降,更可怕的是,程序的可理解性和可维护性明显降低了,当操作增多时,处理资源释放的代码就会越来越多,越来越乱。栈在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。

wzzrh的博客 1万+

Linux软链接原理与工程实践:从ln -s命令深入文件系统底层

符号链接(Symbolic Link)是Linux文件系统中实现路径间接引用的核心机制,其本质是内核VFS层对目标路径字符串的动态重解析,区别于共享inode的硬链接。它支撑着跨文件系统挂载、多版本工具切换、DevOps环境标准化等关键能力,技术价值在于解耦逻辑路径与物理存储,提升配置可维护性与部署一致性。典型应用场景包括CLI命令别名管理、容器镜像构建中的依赖组织、dotfiles版本化同步,以及WSL/跨平台开发中的路径兼容性适配。本文结合inode结构、symlinkat系统调用、相对/绝对路径语义差

weixin_30333885的博客 468

走进Java架构!MySQL千万数据量深分页优化,请把这些学完再去面试

前言 从接触编程就开始使用 Git 进行代码管理,先是自己玩 Github,又在工作中使用 Gitlab,虽然使用时间挺长,可是也只进行一些常用操作,如推拉代码、提交、合并等,更复杂的操作没有使用过,看过的教程也逐渐淡忘了,有些对不起 Linus 大神。 出来混总是要还的,前些天就遇到了 Git 里一种十分糟心的场景,并为之前没有深入理解 Git 命令付出了一下午时间的代价。 先介绍一下这种场景,我们一个项目从 N 版本升到 A 版本时引入了另一项目的 jar 包,又陆续发布了 B、C 版本,但在 C 版

m0_56830858的博客 226

Log4j2反序列化漏洞原理剖析与实战复现指南

Java反序列化是将序列化字节流重建为对象的过程,其核心原理在于JVM会调用对象的readObject()方法。这一机制在提供便利的同时,也带来了严重的安全风险:攻击者通过精心构造的序列化数据,可以触发目标类库中危险的调用链,最终实现任意代码执行。其技术价值在于深刻揭示了依赖信任边界的重要性,是理解软件供应链安全的关键案例。该漏洞的典型应用场景常出现在处理外部输入数据的组件中,例如日志框架、RPC通信和数据持久化层。本文聚焦于Log4j2框架,深入分析了其插件化架构与反序列化机制的危险结合点,并提供了从环境

weixin_34258838的博客 334

Julia Pkg包管理器核心原理与可复现环境实战指南

在科学计算与工程化部署中,环境可复现性是保障结果一致性的基石。Julia 的 Pkg 并非 pip 或 conda 的简单替代,而是深度耦合其 JIT 编译机制、依赖约束求解(SAT)与 UUID 永久标识体系的原生环境管理系统。它通过 Project.toml 声明意图、Manifest.toml 锁定全栈快照(含 commit hash),实现跨机器、跨时间的精确复现。该机制支撑科研验证、CI/CD 稳定构建及私有算法隔离等关键场景。本文聚焦 Julia 1.10 实测经验,解析 activate/re

mxdxm8899的专栏 536

Shiro反序列化漏洞:从原理到实战的Java Web安全攻防剖析

Java反序列化漏洞是Web安全领域的核心议题之一,其原理在于Java对象在序列化与反序列化过程中,若未对输入数据进行严格校验,攻击者可通过构造恶意序列化数据触发危险方法调用,从而实现远程代码执行。这项技术的安全价值在于揭示了依赖链与信任边界的重要性,广泛应用于渗透测试、红队评估等场景。在Apache Shiro框架中,其RememberMe功能的AES加密机制若配合默认或弱密钥,会形成典型反序列化利用路径,结合CommonsCollections等Gadget链可导致严重RCE风险。本文通过热词“反序列化

leonard61306500的专栏 349

Ubuntu零基础入门到精通【1.1讲】:什么是 Ubuntu?一文带你彻底搞懂!

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。 本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。

**My Coding Family** 5725

GIT图解完整PDF版

GIT图解 完整PDF图书,详细的说明GIT的使用和原理

线性回归LinearRegression

对视频中线性回归算法的相关内容进行总结与记录 文章目录一、理论基础二、实例2.1 一元线性回归2.1.1 推导过程2.1.2 代码实现(基于numpy)2.1.3 代码实现(基于sklearn)2.2 多元线性回归2.2.1 代码实现(基于numpy)2.2.2 代码实现(基于sklearn) 一、理论基础 回归 通常是指利用某个函数,尽可能把数据样本点“串”在一起,用于描述输入变量和输出变量间的变化关系 线性回归 特点:用来把数据“串”起来的那个函数是线性的 (一元线性回归(一个自变量) &a.

邱邱邱的博客 1068

免费大容量国外网盘测评:冷数据归档与rclone加密接入

云存储的本质,是通过对象存储、冗余编码和分层缓存,把本地磁盘容量问题转化为网络访问与数据管理问题。免费大容量国外网盘常以空间换用户规模或付费转化,容量政策、传输策略、协议支持和退出成本,往往比标称容量更决定长期可用性。支持 WebDAV、S3 兼容和命令行工具的服务,可接入 rclone 等自动化流程,再配合客户端加密与冷热分层,用于冷数据归档、老项目备份和家庭影像保存。理解带宽换算、单文件上限、保活机制与传输一致性后,评估话题型大容量网盘与专业向协议网盘,就能把免费空间纳入可靠存储层。围绕免费大容量国外网

weixin_31292729的博客 212

深入解析APS开源排程工具OptaPlanner:链式结构与移动优化

本文深入解析了开源APS排程工具OptaPlanner的核心机制,重点阐述了链式结构如何作为排程优化的“骨架”,通过单一`previous`变量隐式定义资源与顺序,从而简化建模。文章详细介绍了基于此结构的移动操作(如`ChainChangeMove`)如何驱动优化引擎探索解空间,并自动触发影子变量更新与分数计算,为构建高效、灵活的生产计划系统提供了实践指导。

keras9composer的博客 297

从选型到阵列:基于ESP32-S3的智能硬件麦克风系统设计实战

本文详细介绍了基于ESP32-S3芯片设计智能硬件麦克风阵列的完整实战方案。从核心芯片选型、数字MEMS麦克风的参数解读与电路设计,到关键的声学结构密封、阵列布局策略,再到利用ESP-ADF框架构建音频处理流水线并集成回声消除、噪声抑制等算法,提供了从硬件到软件的全链路设计指南与避坑要点,旨在实现清晰、稳定的远场语音交互。

weixin_29173777的博客 266

OpenClaw + Ollama 本地大模型部署教程:彻底告别Token焦虑

OpenClaw + Ollama 本地大模型部署教程:彻底告别Token焦虑

leaning_java的博客 1227

基于Simulink和Control System Toolbox的线控转向(Steer-by-Wire)系统设计

通过上述步骤,我们成功设计并实现了基于 Simulink 和 Control System Toolbox 的线控转向(Steer-by-Wire)系统。该系统能够接收来自方向盘的角度指令,经过控制器处理后,驱动转向执行器(如电动机),实现对车辆前轮转向角度的精确控制。通过虚拟场景仿真、硬件在环测试和实车测试,验证了系统的响应速度、控制精度、车辆稳定性和实时性能,并通过参数优化进一步提升了系统的性能。

MHD0815的博客 549

多周期路径约束(set_multicycle_path )

1.由慢到快的多周期约束 如下图所示,发射时钟周期是接受时钟周期的4倍。默认情况下,按照1T原则来进行静态时序分析和布局布线的。即建立时间是在发射沿后的第一个捕获沿检查,而保持时间是同一时刻下源时钟和捕获时钟的触发边沿下检查的(建立时间检查边沿的前一个触发沿)。 但是这样导致的问题就是该路径过于苛刻,为了满足这条路径的要求,不得不放弃其他路径。或者根本没办法保证这个默认的约束。总之最终造成...

Arist. 5506

《网络安全自学教程》- 防火墙原理分析与Windows防火墙使用配置

防火墙分类及原理,Windows开启防火墙,Windows防火墙添加策略,

wangyuxiang946的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: Java18都在路上了,你还在用Java8吗?
下一篇: 【实战】Spring Cloud Gateway 整合 OAuth2.0 实现分布式统一认证授权
superjava_
博客等级 码龄5年 254粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值