跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Git 原理与使用详解(上):版本控制核心架构与基础操作

Git 核心原理与基础操作涵盖安装配置、工作区暂存区版本库机制、文件增删改查回退撤销、分支管理策略及冲突解决。通过解析 Git 对象模型与数据流,帮助开发者建立系统性认知,掌握版本控制工具的高效使用方法。文章详细讲解了 Linux 与 Windows 下的安装方法,以及 git add、commit、reset、checkout、merge 等关键命令的实际应用场景。

追风少年发布于 2026/3/24更新于 2026/10/980 浏览
Git 原理与使用详解(上):版本控制核心架构与基础操作

Git 原理与使用详解(上)

1. 初识 Git

在软件开发的全流程中,版本控制是保障协作效率、规避开发风险的核心基石。Git 作为目前最流行、最强大的分布式版本控制系统,已渗透到从个人开发到大型企业级项目的每一个环节。

提出问题

编写文档或代码时,为防止丢失或失误,常需复制多个副本(如 v1, v2, 最终版等)。随着版本增多,管理困难且容易混淆修改内容。

解决方案

使用版本控制器。它能记录工程的每一次改动和版本迭代,方便多人协同作业。目前主流的是 Git。

注意事项:

  • Git 主要跟踪文本文件的改动(如 TXT、网页、代码)。
  • 对于图片、视频等二进制文件,只能管理版本串连,无法跟踪具体变化细节。

2. Git 安装

Git 是开放源代码的代码托管工具,支持 Linux、Unix、Mac 和 Windows 平台。

2.1 Linux — CentOS 系统安装 Git

以 CentOS 7.6 为例:

检查是否安装:

git

若提示 command not found,则未安装。

安装命令:

sudo yum -y install git

查看版本:

git --version

2.2 Linux — Ubuntu 系统安装 Git

以 Ubuntu 22.04 为例:

检查是否安装:

git

若提示 Command 'git' not found,可尝试安装。

安装命令:

sudo apt-get install git -y

查看版本:

git --version

2.3 Windows 系统安装 Git

Windows 用户可前往官网下载并安装 Git for Windows。


3. Git 基本操作

3.1 创建 Git 本地仓库

仓库是进行版本控制的文件目录。创建 Git 本地仓库的命令为 git init。

执行后当前目录下会多出一个 .git 隐藏目录,这是 Git 用来跟踪管理仓库的,不要手动修改其中文件。

3.2 配置 Git 本地仓库

安装 Git 后首先设置用户名和邮箱:

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

--global 表示该机器上所有 Git 仓库都使用此配置。若不同仓库需不同配置,可省略该选项,但需在仓库内执行。

查看配置:

git config -l

删除配置:

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

3.3 认识工作区、暂存区、版本库

  1. 工作区:电脑上写代码或文件的目录。
  2. 暂存区:英文叫 stage 或 index,存放在 .git/index 文件中。
  3. 版本库:英文名 repository,即 .git 目录,包含所有被 Git 管理的文件历史。

工作机制:

  • 创建版本库时,Git 自动创建唯一的 master 分支及指向 master 的指针 HEAD。
  • 对文件执行 git add 时,更新暂存区目录树索引。
  • 执行 git commit 时,master 分支更新,暂存区内容真正写入版本库。

注意:仅新建或粘贴文件不算向仓库新增,必须通过 git add 和 git commit 才能提交管理。

3.4 添加文件 — 场景一

在包含 .git 的目录下新建文件,使用 git add 添加到暂存区:

  • 添加一个或多个文件:git add [file1] [file2] ...
  • 添加指定目录:git add [dir]
  • 添加当前目录下所有改动:git add .

提交暂存区内容到本地仓库:

  • 提交全部内容:git commit -m "message"
  • 提交指定文件:git commit [file1] [file2] ... -m "message"

查看历史提交记录:

git log

使用 --pretty=oneline 可简化输出。Commit ID 是 SHA1 计算出的十六进制字符串。

3.5 查看.git 文件

.git 目录结构解析:

  1. index:暂存区,git add 后更新。
  2. HEAD:默认指向 master 分支的指针。
  3. refs/heads/master:保存当前 master 分支的最新 commit id。
  4. objects:对象库,包含各种版本库对象及内容,经过 SHA 加密。

3.6 添加文件 — 场景二

若新增了两个文件但未全部 add,直接 commit 只会提交已暂存的文件。遗漏的文件需再次 add 后 commit。

3.7 修改文件

Git 跟踪的是修改而非文件本身。使用 git status 查看上次提交后的修改状态。 查看差异:

git diff [file]
# 或查看版本库与工作区区别
git diff HEAD -- [file]

确认无误后 git add 并提交。

3.8 版本回退

使用 git reset 命令回退版本。 语法:git reset [--soft | --mixed | --hard] [HEAD]

  • --mixed(默认):暂存区退回,工作区不变。
  • --soft:版本库退回,暂存区和工作区不变。
  • --hard:暂存区和工作区均退回(慎用,未提交代码会丢失)。

HEAD 引用说明:

  • HEAD:当前版本
  • HEAD^:上一个版本
  • HEAD~1:上一个版本
  • commit_id:指定版本

若 commit 信息被清屏,可使用 git reflog 找回操作记录。

3.9 撤销修改 — 情况一

工作区代码未 add: 使用 git checkout -- [file] 恢复工作区文件到最近一次 add 或 commit 状态。 注意:-- 不可省略。

3.10 撤销修改 — 情况二

已 add 但未 commit: 使用 git reset 将暂存区退回,然后丢弃工作区修改。

3.11 撤销修改 — 情况三

已 add 且 commit: 使用 git reset --hard HEAD^ 回退到上一个版本。前提是该版本未推送到远程。

3.12 删除文件

删除也是修改操作。

  • 仅删除工作区文件:rm file
  • 从版本库删除:git rm file,然后 commit。 误删可使用 git checkout -- [file] 恢复。

4. 分支管理

4.1 理解分支

分支是并行开发的机制。每次提交形成一条时间线,即分支。默认主分支为 master。 HEAD 指向当前分支,master 指向提交。

4.2 创建、切换、合并分支

  1. 创建分支:git branch dev
  2. 切换分支:git checkout dev
    • 切换后 HEAD 指向新分支。
  3. 合并分支:git merge dev
    • Fast-forward 模式:直接将 master 指向 dev 当前提交,速度快。

4.3 删除分支

在当前分支外删除:git branch -d dev 若当前处于该分支下,无法删除。

4.4 合并冲突

当两个分支修改了同一文件的同一部分时,会产生冲突。 Git 会用 <<<<<<<, =======, >>>>>>> 标记冲突内容。 解决步骤:

  1. 手动编辑文件解决冲突。
  2. git add 标记解决。
  3. git commit 完成合并。

4.5 分支模式

Fast-forward 模式会丢失分支历史信息。禁用 Fast-forward 可保留合并节点:

git merge --no-ff -m "merge message" dev

这样在历史中能看到明确的合并提交。

4.6 分支策略

  • master:稳定,仅用于发布新版本。
  • dev:开发分支,不稳定,日常开发在此进行。
  • 功能分支:每个开发者或个人任务创建独立分支,完成后合并至 dev。

4.7 Bug 分支

修复线上 bug 时,基于 master 创建临时分支修复,合并后再删除。 若当前工作区有未提交代码,可使用 git stash 储藏现场:

git stash list
# 恢复现场
git stash pop

建议先在本地分支合并 master 解决潜在冲突,再让 master 合并该分支。

4.8 删除临时分支

新功能开发完成后,合并并删除 feature 分支。 若中途停止开发,强制删除未完成分支:

git branch -D feature_name

分支允许快速创建、切换和删除,既安全又不影响他人工作。

目录

  1. Git 原理与使用详解(上)
  2. 1. 初识 Git
  3. 提出问题
  4. 解决方案
  5. 2. Git 安装
  6. 2.1 Linux — CentOS 系统安装 Git
  7. 2.2 Linux — Ubuntu 系统安装 Git
  8. 2.3 Windows 系统安装 Git
  9. 3. Git 基本操作
  10. 3.1 创建 Git 本地仓库
  11. 3.2 配置 Git 本地仓库
  12. 3.3 认识工作区、暂存区、版本库
  13. 3.4 添加文件 — 场景一
  14. 3.5 查看.git 文件
  15. 3.6 添加文件 — 场景二
  16. 3.7 修改文件
  17. 或查看版本库与工作区区别
  18. 3.8 版本回退
  19. 3.9 撤销修改 — 情况一
  20. 3.10 撤销修改 — 情况二
  21. 3.11 撤销修改 — 情况三
  22. 3.12 删除文件
  23. 4. 分支管理
  24. 4.1 理解分支
  25. 4.2 创建、切换、合并分支
  26. 4.3 删除分支
  27. 4.4 合并冲突
  28. 4.5 分支模式
  29. 4.6 分支策略
  30. 4.7 Bug 分支
  31. 恢复现场
  32. 4.8 删除临时分支

更多推荐文章

查看全部
  • C++ 深入解析 std::back_inserter 用法与原理
  • 全球 10 大顶尖大模型团队人才分析:167 位华人入选
  • 2026 年医疗 AI 可信系统全栈实现(上)
  • Linux 基础 IO:从一切皆文件到自定义 libc 缓冲区
  • 无人机植物病害目标检测数据集(1500 张已标注图片)
  • C语言数据结构与算法基础:文件操作、排序查找及链表简介
  • C++ 面试核心知识点总结:语法、内存与 STL
  • Transformers 库入门与实战指南
  • Linux 系统目录结构详解
  • 本地部署开源 AI 项目 LocalAI 实现消费级硬件运行大模型
  • 除了卖课,普通人如何通过 AI 实现商业价值?
  • Ubuntu 系统下 DEB 包安装与管理实战指南
  • Python 基于关键词爬取小红书笔记数据脚本
  • OpenCode AI 编程保姆级使用教程:从安装到实战,效率直接拉满
  • FAIR plus 机器人全产业链接会:2026 深圳展会前瞻
  • 魔因漫创集成中转平台实现低成本AI漫画视频创作
  • 2026 年 11 款开源及免费项目管理工具选型对比与优劣分析
  • 动态规划解法:01 背包问题与分割等和子集
  • WordPress 性能极致优化指南:从服务器底层到前端缓存
  • 高鋒集團與 Web3Labs 如何賦能傳統企業 Web3 轉型

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online