当前位置: 首页 > news >正文

Git篇(一): 读懂 Git:从 Linux 安装到底层目录、版本回退完整拆解

如果说代码是程序员的作品,那 Git 就是守护作品的“时光机”与“协作桥”。日常开发中,我们反复修改代码、迭代功能、修复 bug,一旦出错需要回溯版本、多人协作需要合并代码、项目迭代需要区分不同版本,没有专业工具加持,只会陷入“代码备份1、备份2、最终版、最终版真不改了”的混乱困境。Git 的诞生,就是为了解决所有版本管理与协作难题。它无需复杂配置,轻便高效,既能帮个人开发者精准记录每一次代码变更,随时回溯任意版本;也能支撑大型团队多人并行开发,高效解决代码冲突、同步迭代进度。不管是编程初学者,还是入行不久的开发者,掌握 Git 都是提升编程素养、适配开发工作的第一步。

一.安装Git

Git 是开放源代码的代码托管工具,最早是在Linux下开发的。开始也只能应用于Linux平台,后面慢慢的被移植到windows下,现在,Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。

1.Linux-Centos下安装

sudo yum install -y git

可以输入命令

git --version

来查看git的版本

2.Linux-Ubuntu下安装

sudo apt-get install git -y
​ git --version //查看版本

二.Git基本操作

1.创建Git仓库

要提前说的是,仓库是进行版本控制的一个文件目录。我们要想对文件进行版本控制,就必须先创建一个仓库出来

git init //初始化仓库

出现以上内容之后,就说明本地仓库已经创建完成了

1..git文件是什么

.git 是 Git本地仓库的核心数据库文件夹存储项目全部提交历史、分支与远程配置,支撑所有版本管理功能,一旦删除则所有版本记录丢失,项目变为普通文件夹。

2.配置Git

git config [--global] user.name "Your Name" git config [--global] user.email "email@example.com" # 把 Your Name 改成你的昵称 # 把 email@example.com 改成邮箱的格式,只要格式正确即可。

--global是配置全局Git环境‌(所有的仓库都会被配置),如果不加--global只会在当前目录下配置

1.查看配置命令

​ git config -l //查看全局配置 git config --local --list // 查看当前仓库

2.删除配置

git config [--global] --unset user.name git config [--global] --unset user.email

3.重置配置

​ # 重置当前仓库的user.name、user.email,换成你要重置的配置项即可 git config --unset user.name git config --unset user.email # 加上--global参数即可,比如重置全局的user.name git config --global --unset user.name git config --global --unset-all user.name git config --local --unset-all //清空‌当前本地仓库‌的所有配置 git config --global --unset-all //清空‌全局Git‌的所有配置

三.认识工作区、暂存区、版本库

  • 工作区:是在电脑上你要写代码或文件的目录
  • 暂存区:英文叫 stage 或 index。一般存放在.git目录下的 index 文件(.git/index)中,我们把暂存区有时也叫作索引(index)。
  • 版本库:又名仓库,英文名repository。工作区有一个隐藏目录.git它不算工作区,而是 Git 的版本库。这个版本库里面的所有文件都可以被 Git 管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

下面这个图展示了工作区、暂存区和版本库之间的关系:

  • 在创建 Git 版本库时,Git 会为我们自动创建一个唯一的 master 分支,以及指向master 的一个指针叫 HEAD。(分支和HEAD的概念后面再说)
  • 当对工作区修改(或新增)的文件执行git add命令时,暂存区目录树的文件索引会被更新。
  • 当执行提交操作git commit时,master 分支会做相应的更新,可以简单理解为暂存区的目录树才会被真正写到版本库中。

1.添加文件

1.add

在包含.git的目录下新建一个 ReadMe 文件,我们可以使用git add命令可以将文件添加到暂存区:

ReadMe(也译作自述文件)是软件开发、项目工程中位于项目根目录,用来介绍说明项目信息的入口文档,核心作用是帮助使用者快速了解、上手该项目。

添加一个或多个文件到暂存区:git add [file1] [file2] ... 添加指定目录到暂存区,包括子目录:git add [dir] 添加当前目录下的所有文件改动到暂存区:git add .

2.commit

再使用git commit命令将暂存区内容添加到本地仓库中:

提交暂存区全部内容到本地仓库中: git commit -m "message" 提交暂存区的指定文件到仓库区:git commit [file1] [file2] ... -m "message"

注意git commit后面的-m选项,要跟上描述本次提交的message,由用户自己完成,这部分内容绝对不能省略,并要好好描述,是用来记录你的提交细节,是给我们人看的。

1.查看文件状态

如果仓库中的文件和我们工作区的文件不同,如何查看当前仓库的状态呢?git status命令用于查看在你上次提交之后是否有对文件进行再次修改。

git status
2.查看文件新增内容

通过上面操作我们只知道哪个文件被修改,但是并不知道文件修改的内容是什么

git diff 文件名 //查看文件修改内容
3.查看历史提交记录
git log git log --pretty=oneline //行显示 更美观

观察版本库变化

2.Git管理文件的本质

值得注意是Git追踪的是修改的内容,而不是文件

四.认识.git文件中的主要内容

1.index

index就是我们的暂存区,add 后的内容都是添加到这里的,暂存区负责暂存接下来要提交到版本库的内容,是Git分层管理提交流程的关键一步。

2.HEAD

HEAD:它是Git的当前版本指针,通常默认指向当前本地仓库的当前分支(默认分支一般是master),通过HEAD可以确定当前工作区基于哪个版本,提交后HEAD会自动移动指向最新的提交

3.objects

objects为 Git 的对象库,里面包含了创建的各种版本库对象及内容。当执行git add命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,就位于".git/objects"目录下

查找 object 时要将 commit id 分成2部分,其前2位是文件夹名称,后38位是文件名称。

git cat-file -p <commit id>

五.版本回退

之前我们也提到过,Git能够管理文件的历史版本,这也是版本控制器重要的能力。如果有一天你发现之前的工作做的出现了很大的问题,需要在某个特定的历史版本重新开始,这个时候,就需要版本回退的功能了。

执行git reset命令用于回退版本,可以指定退回某一次提交的版本。要解释一下 “回退” 本质是要将版本库中的内容进行回退,工作区或暂存区是否回退由命令参数决定

git reset [--soft | --mixed | --hard] [HEAD]
  • --mixed默认选项,使用时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容,工作区文件保持不变。不带文件名:版本库 HEAD、暂存区,工作区不动 ;带文件名:只操作暂存区,完全不动版本库 HEAD
  • --soft参数对于工作区和暂存区的内容都不变,只是将版本库回退到某个指定版本
  • --hard参数将暂存区与工作区都退回到指定版本。切记工作区有未提交的代码时不要用这个命令,因为工作区会回滚,你没有提交的代码就再也找不回了,所以使用该参数前一定要慎重。

HEAD 说明:

可直接写成 commit id,

表示指定退回的版本

HEAD/HEAD~0 表示当前版本

HEAD^ /HEAD~1 上一个版本

HEAD^^ /HEAD~2上上一个版本

以此类推...

查看本地所有HEAD变动日志

git reflog

1.仅回退工作区内容

git checkout -- 文件名

这个命令是丢弃文件在工作区的所有未提交修改,将这个文件还原成版本库中当前HEAD指向的版本内容,命令执行成功就说明已经完成了文件还原。

2.仅回退版本库内容

git reset --soft HEAD^

2.回退工作区和暂存区内容

git reset (--mixed) HEAD 文件名

3.回退工作区、暂存区、版本库内容(慎用)

git reset --hard HEAD^

六.删除文件

1.第一种情况

在 Git 中,删除也是一个修改操作,我们实战一下,如果要删除 file5 文件,怎么搞呢?如果你这样做了:

对于这种情况该如何解决呢?

我们只删除了工作区的文件。这时就需要使用 git rm 将文件从暂存区和工作区中删除,并且 commit:

git rm 文件名

2.第二种情况

如果是误删,(删除也是修改)

git checkout -- 文件名

http://www.jsqmd.com/news/1110867/

相关文章:

  • 2026年黑苦荞全株茶大比拼:哪家公司更值得信赖?
  • visual studio 2026 快捷键如何找一个文件?比如SPexc.cpp
  • Windows音频路由终极指南:用Synchronous Audio Router实现专业级音频管理
  • 2026真实测评!主流跨境B2B系统优缺点对比哪款最值得入手?
  • 掌握AI教材编写技巧,低查重AI工具让教材生成不再难!
  • 2026年AI论文软件深度剖析:哪几款能真正贴合学术规范和格式要求
  • 2026实测:5款AI编程工具深度对比,找到适配中文vibe coding的Cursor平替
  • 终极指南:3分钟掌握中国科学技术大学学位论文LaTeX模板
  • 5个高效技巧:掌握百度网盘秒传链接转存工具
  • 大模型推理稳定性架构:静默韧性层原理与工程实践
  • GPT-4o技术解析:多模态架构与低延迟推理原理
  • AI模型能力评估与可控发布机制解析
  • Claude语义压缩层蒸发:模型可控性向应用层迁移
  • 紧致黎曼曲面上全纯截面球体积增长率的估计与应用
  • 基于Merkle树的AI代理因果结构编码与可序列化执行实践
  • TB9051FTG与PIC18F2525实现超静音电机控制方案
  • LangChain vs LlamaIndex vs DSPy:AI应用框架选型指南
  • 技术博客搭建指南:从零实现静态博客系统
  • 美消费者与小企业状告三星等三巨头内存价格操纵,韩企扩产防中企‘偷家’
  • PCF8591与PIC24HJ256GP610的混合信号处理系统设计
  • EmbodiedClaw:对话式工作流如何革新具身AI开发范式
  • 2026空号检测平台选型决策指南:企业认证合规要求与实时查询能力综合排名
  • 2026多语言交易所系统开发搭建成品源码
  • Anthropic归零层:语义保真度校验环的工程移除与性能跃迁
  • AD74413R与PIC18F85J10的高精度工业信号采集方案
  • 实测AI专著生成工具,一键打造20万字高水准专著,值得拥有!
  • Layerdivider终极指南:如何用AI图像分层工具10倍提升PSD制作效率
  • M-GDM:基于元数据引导的无掩码视频修复技术原理与实践
  • SQL Server索引碎片与填充因子实战指南
  • 2026 年 7 月领英 InMail 重大改版!AI 写作全面开放,外贸人开发话术必须彻底迭代