news 2026/5/26 15:45:59

Git 入门:为什么需要版本控制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Git 入门:为什么需要版本控制

文章目录

  • Git 入门:为什么需要版本控制
    • 一、文件版本混乱是怎么产生的
    • 二、什么是版本控制
    • 三、Git 是什么
    • 四、Git 和普通文件备份有什么区别
    • 五、Git 能帮我们做什么
      • 1. 保存项目历史
      • 2. 查看文件差异
      • 3. 回退历史版本
      • 4. 支持多人协作
      • 5. 支持分支开发
    • 六、Git 的基本使用思路
    • 七、安装 Git
    • 八、在 CentOS 中安装 Git
    • 九、在 Ubuntu 中安装 Git
    • 十、在 Windows 中安装 Git
    • 十一、Git Bash 是什么
    • 十二、安装后的常见问题
      • 1. git 命令不存在
      • 2. PowerShell 和 Git Bash 该用哪个
      • 3. Git 安装成功后还需要配置吗
    • 总结

Git 入门:为什么需要版本控制

一、文件版本混乱是怎么产生的

在学习 Git 之前,可以先想一个很常见的场景。

平时写文档、写代码、改项目时,为了防止内容丢失,或者为了保留某个阶段的修改结果,我们经常会手动复制出很多版本。

比如写一份报告,可能会变成这样:

报告-v1 报告-v2 报告-v3 报告-最终版 报告-最终版-修改版 报告-真的最终版 报告-真的最终版-最终不改版

刚开始这样做似乎没什么问题,因为文件数量还少,自己也大概记得每个版本改了什么。

但是时间一长,问题就会越来越明显:

  • 文件越来越多,不知道哪个才是最新版本;
  • 每个版本到底修改了什么,很难记清楚;
  • 想恢复到之前某个状态,只能靠印象去找;
  • 如果改错了,可能没有办法准确回退;
  • 如果多个人同时修改同一份内容,合并起来会非常麻烦。

写普通文档尚且如此,写代码时问题会更加明显。

一个代码项目通常不是一个文件,而是由很多源文件、配置文件、脚本文件和说明文档共同组成。一个功能的修改,可能同时涉及多个文件。如果仍然靠复制整个文件夹的方式保存版本,项目很快就会变得混乱。

Git 要解决的第一个问题,就是让项目的每一次变化都变得可记录、可追踪、可恢复。


二、什么是版本控制

版本控制,简单来说,就是记录文件或项目在不同时间点的变化。

如果把一个项目从创建到不断修改的过程看成一条时间线,那么版本控制系统就是帮助我们保存这条时间线的工具。

比如一个项目可能经历了这样的变化:

初始化项目 ↓ 添加登录功能 ↓ 修改登录校验逻辑 ↓ 添加订单模块 ↓ 修复订单模块 Bug

每一步变化都可以被记录下来。

以后如果发现“修改登录校验逻辑”这一步有问题,就可以查看当时到底改了什么,甚至可以把项目恢复到这一步之前的状态。

版本控制的核心价值主要体现在三个方面:

1. 可追踪

项目的每一次重要修改都可以留下记录。

比如谁在什么时候修改了哪些文件,这次修改对应的说明是什么,都可以被保存下来。

2. 可对比

可以查看当前版本和历史版本之间到底有哪些差异。

这对于代码检查非常重要。因为很多时候我们并不是只关心“文件变了”,而是关心“具体哪一行变了”。

3. 可恢复

如果代码写错了,或者某个功能暂时不想要了,可以回退到之前的版本。

这比手动找备份文件可靠得多。

对于个人开发来说,版本控制可以避免代码丢失和修改混乱。

对于团队开发来说,版本控制更加重要。因为多人协作时,每个人都可能修改项目中的不同文件,甚至修改同一个文件。没有版本控制工具,代码合并、历史追踪和问题定位都会非常困难。


三、Git 是什么

Git 是目前使用非常广泛的版本控制工具。

它是一个开源的分布式版本控制系统。这里先不用急着深究“分布式”这三个字,后面学习远程仓库和多人协作时会详细展开。

现在可以先建立一个直观印象:

Git 可以帮助我们管理项目历史,让每一次代码变化都被清晰记录下来。

对开发者来说,Git 最常见的用途就是管理代码。

不过 Git 不只能管理代码,它也可以管理很多类型的文件,比如:

  • .txt文本文件;
  • .mdMarkdown 文档;
  • .c.cpp.java.py等源代码文件;
  • .html.css.js等前端文件;
  • .json.xml.yml等配置文件;
  • 项目说明文档;
  • 图片、压缩包、Word、Excel 等二进制文件。

不过这里要注意一点:Git 最擅长管理的是文本文件。

因为文本文件可以按行比较,Git 能够清楚地知道每次修改具体发生在哪里。

比如 Git 可以识别出:

第 5 行新增了一句话 第 8 行删除了一段内容 第 12 行修改了一个变量名

这对代码管理非常重要。

但是对于图片、视频、压缩包这类二进制文件,Git 虽然也能保存它们的版本变化,但没有办法像文本文件那样精确展示修改细节。

比如一张图片从100KB变成了120KB,Git 能知道这个文件发生了变化,但它并不知道图片里具体哪一块被修改了。

所以可以这样理解:

Git 可以管理二进制文件,但真正发挥优势的场景,还是代码、文档、配置文件这类文本内容。


四、Git 和普通文件备份有什么区别

很多人刚接触 Git 时,会觉得它和“复制一份文件做备份”差不多。

其实两者差别很大。

普通文件备份通常是这样的:

main.cpp main-备份.cpp main-修改前.cpp main-最终.cpp main-最终-修正版.cpp

这种方式最大的问题是:版本信息靠文件名和人的记忆维护。

时间一长,就会变得非常不可靠。

Git 管理版本的方式不是让我们不断复制文件,而是让我们在合适的时机提交一次修改记录。

每次提交都可以带上一段说明,例如:

初始化项目结构 添加用户登录功能 修复登录失败提示错误的问题 添加订单查询接口

这样一看就能知道每个版本大概做了什么。

更重要的是,Git 记录的是整个项目的一次变化,而不是某一个孤立文件的备份。

一次提交可以包含多个文件的变化。比如添加一个登录功能时,可能同时修改了:

UserController.java UserService.java login.html application.yml README.md

Git 可以把这些文件的变化作为同一次提交记录下来。

这比手动复制文件夹清晰得多。

所以,Git 不是简单的文件备份工具,而是一个专业的项目版本管理工具


五、Git 能帮我们做什么

学习 Git,不只是为了记几个命令,而是为了在真实开发中解决问题。

Git 常见的能力主要有下面几类。

1. 保存项目历史

每完成一个阶段性的修改,就可以提交一次。

这样项目的历史会被 Git 保存下来。

以后想查看项目是怎么一步步变成现在这样的,就可以通过提交记录进行追踪。

2. 查看文件差异

修改文件后,可以通过 Git 查看当前内容和上一次提交之间的差异。

这在提交代码前非常有用。

因为有时候我们改了很多文件,自己可能都忘了具体改过哪些地方。提交前先查看差异,可以避免把无关修改一起提交进去。

3. 回退历史版本

如果某次修改写错了,或者某个功能暂时不需要了,可以回退到之前的版本。

这比手动找备份文件可靠得多。

4. 支持多人协作

真实开发中,一个项目往往不是一个人完成的。

Git 可以让多个人同时参与同一个项目。每个人都可以提交自己的修改,再通过 Git 合并到一起。

5. 支持分支开发

分支是 Git 中非常重要的能力。

比如主线代码正在稳定运行,但我想开发一个新功能,又不想影响主线代码,就可以创建一个新分支。

在分支上开发、测试都没问题后,再把它合并回主线。

这样可以让开发过程更加安全,也更容易管理。

分支后面会单独展开。现在只需要先记住一句话:

分支可以让不同开发任务互不干扰。


六、Git 的基本使用思路

刚开始学习 Git,不需要一上来就理解所有底层细节,可以先建立一个基本流程。

Git 的本地操作大致可以理解为:

修改文件 -> 添加到暂存区 -> 提交到本地仓库

对应的常见命令是:

修改文件 -> git add -> git commit

如果后面涉及远程仓库,还会多一步:

修改文件 -> git add -> git commit -> git push

这里先简单理解一下:

  • git add:把文件修改添加到暂存区;
  • git commit:把暂存区中的内容提交到本地仓库;
  • git push:把本地提交推送到远程仓库。

也就是说,Git 不是在你每次保存文件时自动生成一个版本,而是需要你主动告诉它:

这部分修改我确认好了,可以保存成一个版本。

这种方式看起来多了一步,但好处是非常明显的。

我们可以把一组相关修改整理成一次提交,而不是让每一次零散保存都变成一个版本。这样项目历史会更加清晰。

举个例子,如果一次提交的说明是:

修复用户登录失败时的错误提示

那么这次提交里最好只包含和“登录失败提示”相关的代码。

如果顺手把订单模块、页面样式、配置文件都一起改进去,后面排查问题时就会很难受。

所以后面真正使用 Git 时,一个很重要的习惯是:

一次提交尽量只做一件相对完整的事情。


七、安装 Git

Git 支持多个操作系统,包括:

  • Linux;
  • Windows;
  • macOS。

不同系统安装方式略有不同,下面整理几个常见环境的安装方法。


八、在 CentOS 中安装 Git

如果使用的是 CentOS,可以先检查系统中是否已经安装 Git。

在终端输入:

git

如果系统没有安装 Git,可能会看到类似提示:

-bash: git:commandnot found

这说明当前系统还没有 Git。

CentOS 中可以使用yum安装 Git:

sudoyum-yinstallgit

安装完成后,查看 Git 版本:

git--version

如果能够正常输出版本号,说明 Git 安装成功。

示例:

gitversion2.x.x

九、在 Ubuntu 中安装 Git

如果使用的是 Ubuntu,也可以先检查 Git 是否已经存在:

git

如果没有安装,系统通常会提示可以通过apt安装。

Ubuntu 中安装 Git 可以使用:

sudoapt-getinstallgit-y

安装完成后,同样查看版本:

git--version

如果可以看到 Git 版本号,就说明安装成功。


十、在 Windows 中安装 Git

Windows 下可以通过 Git 安装包进行安装。

安装完成后,可以打开下面任意一种命令行工具:

  • CMD;
  • PowerShell;
  • Windows Terminal;
  • Git Bash。

然后输入:

git--version

如果输出类似下面的内容:

gitversion2.x.x.windows.x

说明 Git 已经安装成功。


十一、Git Bash 是什么

在 Windows 安装 Git 后,通常会多出一个工具:Git Bash

Git Bash 可以理解为 Windows 上的类 Linux 命令行环境。

它支持很多 Linux 风格的命令,比如:

pwdlscdmkdirtouch

对于刚开始学习 Git 的人来说,Git Bash 比较方便,因为很多 Git 命令示例都是按照 Linux 终端风格写的。

当然,如果更习惯 PowerShell,也可以直接在 PowerShell 中使用 Git。

只要下面这个命令能正常执行,就说明当前命令行环境可以使用 Git:

git--version

这里不用纠结必须使用哪个终端。

核心是当前终端能够识别git命令。


十二、安装后的常见问题

1. git 命令不存在

如果输入:

git--version

结果提示命令不存在,可能有几种原因:

  • Git 没有安装成功;
  • Git 没有添加到环境变量;
  • 安装完成后没有重新打开终端;
  • 当前终端没有读取到最新环境变量。

Windows 中如果刚安装完 Git,建议重新打开一次命令行窗口,再执行git --version

2. PowerShell 和 Git Bash 该用哪个

两者都可以。

如果只是学习 Git 命令,Git Bash 更接近 Linux 使用习惯。

如果平时主要在 Windows 下开发,PowerShell 也完全可以使用。

关键不在于使用哪个终端,而在于git命令是否能正常执行。

3. Git 安装成功后还需要配置吗

需要。

Git 安装完成后,通常还要配置用户名和邮箱。

因为每一次提交都需要记录提交者信息。

配置用户名和邮箱一般使用:

gitconfig--globaluser.name"你的用户名"gitconfig--globaluser.email"你的邮箱"

不过这部分内容后面会结合本地仓库一起详细整理。现在只需要先知道:

Git 安装完成后,还需要做一次基础身份配置。


总结

这篇文章主要整理了 Git 的入门概念和安装方式。

核心内容可以总结为:

  • 手动复制文件保存版本很容易混乱;
  • 版本控制可以记录项目在不同时间点的变化
  • Git 是目前非常常用的版本控制工具;
  • Git 最适合管理代码、文档、配置文件等文本内容;
  • Git 可以保存历史、查看差异、回退版本、支持多人协作和分支开发;
  • Git 不是普通文件备份工具,而是项目版本管理工具;
  • 安装完成后,可以通过git --version验证是否安装成功;
  • Git 安装后还需要配置用户名和邮箱,方便后续提交记录身份信息。

ok,到这里,Git 的基本背景就整理完了。

下一篇开始进入 Git 的本地仓库操作,重点整理:

  • 如何创建一个 Git 仓库;
  • .git目录到底是什么;
  • 如何配置 Git 用户名和邮箱;
  • 什么是工作区、暂存区和版本库;
  • 如何完成第一次文件提交。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 15:43:08

Unity导航寻路轨迹可视化:从Debug.DrawLine到工业级调试系统

1. 这不是画线,是让AI“看得见”自己在想什么Unity里做导航寻路,很多人卡在第一步:明明NavMeshAgent跑起来了,可你根本不知道它心里在盘算什么。路径规划是黑箱?不,它本该是透明的——就像修车时掀开引擎盖…

作者头像 李华
网站建设 2026/5/26 15:40:35

机器学习分类算法在不平衡数据欺诈检测中的性能对比与选型指南

1. 项目概述:当机器学习遇上在线欺诈检测 在数字支付成为日常的今天,每一次点击“确认支付”的背后,都潜藏着一条复杂的风险识别流水线。作为一名在风控领域摸爬滚打了多年的从业者,我深知其中的挑战:交易量巨大、欺诈…

作者头像 李华
网站建设 2026/5/26 15:40:26

Unity2D TileMap核心原理与运行时动态操作指南

1. 为什么TileMap不是“画图工具”,而是2D游戏的底层骨架?很多人第一次点开Unity的Tile Palette面板时,下意识把它当成Photoshop的简化版——拖几个方块、拼一堵墙、再加点草皮,就以为TileMap用完了。我带过三届实习生&#xff0c…

作者头像 李华
网站建设 2026/5/26 15:39:59

vSphere集成容器和原生Docker区别?底层架构一眼看懂

在虚拟化和容器混合运维场景中,很多运维人员容易混淆vSphere集成容器与原生Docker的本质差异,常常出现选型错误、部署架构混乱等问题。两者最大的核心区别在于运行底层完全不同:vSphere with Kubernetes集成容器直接运行在ESXi内核层&#xf…

作者头像 李华