Git 是什么:你早就需要版本控制,只是一直用文件夹硬扛
从论文终稿.doc、终稿2.doc、真的最终版.doc 的文件夹存档史讲起,讲清版本控制解决什么、Git 与 GitHub 的区别、仓库/提交/工作区三个最小概念;全篇只有一个动手任务 git --version,安装、配置、操作全部指路后续篇目。
知识点地图
- 知识类别:版本控制与 Git 的入门概念——「为什么需要版本控制」这一前置问题,不涉及具体命令。
- 解决什么问题:用复制文件夹改名硬扛版本的三堵墙——分不清哪个最新、改坏了回不去、多人协作对不上版本。
- 什么时候用到:第一次接触 Git 之前建立认知地基;向别人解释 Git 与 GitHub 的区别;新项目启动时说服自己(或团队)先建仓库再动手。
前置知识
缺哪条都不致命:本文是概念篇,动手任务只有一条命令,每步都有完整命令与预期输出。
学习目标
读完本文你将能够:
- 说出版本控制解决的三件事:存档、后悔药、协作,并各举一个自己踩过的坑;
- 一句话分清 Git 与 GitHub:一个是装在电脑上的工具,一个是放仓库的网站;
- 用不超过两句话解释仓库、提交、工作区这三个词;
- 遇到
git: command not found这类报错时,按「读报错三步」定位到两种可能原因。
预计 20 分钟。安装去 安装与配置,日常操作去 基础操作,本文只负责让你在动手前知道自己为什么需要它。
1. 问题:论文终稿.doc、终稿2.doc、真的最终版.doc
毕业论文、设计稿、游戏策划案……你是不是也这样存过:
论文/
论文终稿.doc
论文终稿2.doc
论文终稿-真的最终版.doc
论文终稿-真的最终版-导师批注.doc
论文终稿-真的最终版-0903.doc用复制文件夹硬扛版本,迟早撞上三堵墙:
- 哪个是最新的? 文件名写日期靠自觉,拷错一份就是灾难;
- 改坏了想退回去? 上一版被覆盖就永远没了;
- 两个人一起改? 同学发来的「最新版」和你手里的「最新版」是两份不同的文件,谁对谁错只能人肉逐段比对。
这三堵墙,工程上有个专门的工具来拆,叫版本控制系统(Version Control System,VCS)。它把手工三件套自动化:
| 你手工做的 | 版本控制替你做的 |
|---|---|
| 复制整个文件夹改名「终稿2」 | 一条命令存一次快照,自动记下时间、作者、改了什么 |
| 翻回收站、找旧备份盘 | 随时回到任何一次快照,历史永久保留 |
| 微信传文件来回对版本 | 每人各自存快照,合并时自动对齐,冲突了明确指出哪一行打架 |
Git 是目前世界上使用最广的版本控制系统。你接下来要学的所有命令,都是在跟这张表的第二列打交道。
2. 动手:全篇唯一的实验
打开终端(Windows 用 Git Bash,macOS 用「终端」),输入:
git --version预期输出(数字不必相同,以 git version 开头即成功):
git version 2.51.0这条命令只回答一个问题:Git 装好了没有。它不进目录、不改文件,在哪个文件夹运行结果都一样。
如果输出是下面两种之一,说明系统找不到 git 这个程序:
bash: git: command not found'git' 不是内部或外部命令,也不是可运行的程序或批处理文件。定位方法见第 5 节;完整安装步骤在 安装与配置。本文到此不再引入任何新命令。
3. Git 与 GitHub:工具与网站
最常见的一句混淆:「我要学 GitHub」。先把关系钉死:
- Git 是工具:一个命令行程序,装在你的电脑上。它记账、存快照、回退历史,全程离线可用,没有账号概念。你敲的每一条
git命令都发生在本机; - GitHub 是网站:github.com,把 Git 仓库放到云端的托管平台,用来备份、展示和多人协作。同类还有 GitLab、Gitee,托管的都是同一件事——Git 仓库。
类比:Word 是工具,网盘是放文档的网站——没人问「Word 和网盘有什么区别」,Git 与 GitHub 同理。这决定了学习顺序:先学 Git(本模块),再到 GitHub 模块学「把仓库发上去、发起协作」。跳过 Git 直接学 GitHub,就像不会拍照先注册相册网站。
4. 三个词的最小解释
整个模块会出现几十个术语,但入门只需要先立住三个:
- 仓库(repository):一个被 Git 管理的文件夹。它 = 你的文件 + 一个隐藏的
.git目录,后者是账本,记着全部历史。仓库可以在你电脑上,也可以在 GitHub 这类网站上; - 工作区(working directory):仓库里你正在编辑的那些文件本体。你看到什么、改了什么,发生在工作区;
- 提交(commit):一次带署名、时间和说明文字的快照存档。仓库的历史就是一串提交连成的线:回到过去,就是回到某次提交时的样子。
三者关系一句话:你在工作区改文件,攒一批有意义的改动做成一次提交,提交们排成仓库的历史。 至于「提交之前」改动停在哪儿(暂存区),基础操作 与 三棵树 会亲手带你撞见,此处不展开。
5. 常见错误与调试实录
第 2 节那两条报错,值得当成第一个调试案例:
- 报错在说什么:系统想执行名为
git的程序,但翻遍了 PATH 里登记的所有目录都没找到(PATH 机制见 终端与命令行入门,更多排错在 环境变量与 PATH); - 只有两种可能:没装,或者装了但系统不知道(刚装完没重开终端,旧窗口读不到新 PATH);
- 对症处理:重开终端再试;仍失败就回 安装与配置 重装,Windows 安装时确认勾选「添加到 PATH」。
PowerShell 用户看到的变体是:
git : 无法将"git"项识别为 cmdlet、函数、脚本文件或可运行程序的名称。同一个病因,换个说法而已。以后看到任何「command not found / 不是内部或外部命令」,都是这套三步。
6. 实际项目场景:FANDEX 自己就是活教材
你正在读的这套教程,来自一个叫 FANDEX 的仓库:装着网站端、桌面端、Android 端和全部教学内容的 monorepo,2900 多个纳入版本管理的文件、500 多次提交。三个可查证的事实:
- 第一次提交在 2026 年 7 月 22 日,信息是
feat: initialize FANDEX monorepo with web/desktop/android subprojects——一个仓库的出生证明,一条可回溯的历史; - 提交信息有固定习惯:一行说清这回改了什么,前缀标类型——
feat:新功能、fix:修 bug、docs:改文档、chore:杂务。半年后翻历史,不用打开内容就知道当时在干嘛; - 每次合入前都有独立分支与审查记录——这靠手工文件夹根本做不到。
你写课程作业、个人项目,用同样的循环(改文件、存快照、说明写清楚)就能享受到同款能力。这不是大厂专属,是每个写代码的人的日常。
练习
预测题(5 分钟,先写答案再运行):
git --version的输出以哪两个词开头?- 换个文件夹再运行一次,输出会变吗?为什么?
修 Bug 题(5 分钟):同学在 Windows 终端运行 git --version,得到 'git' 不是内部或外部命令,且他确认装过 Git。请按读报错三步写出排查顺序,说明每一步在验证哪种可能。
挑战题(10 分钟,不写代码):合上本文,用三句话分别定义仓库、提交、工作区,每句不超过 30 字。验收:讲给一个没学过程序的人听,对方能复述出「账本」「快照」「正在编辑」三个关键词即过关;讲不清就回第 4 节重读。
与之前和之后的知识的关系
本模块按 010 → 020 → 030 → 040 → 050 → 060 的顺序推进:
- 往前:开发环境搭建 装好了 Git 并埋下「零基础阶段只装不用」的伏笔,本文兑现它;
- 本文讲清「为什么需要」,之后全是「怎么做」:安装与配置 补齐三系统安装与身份配置,环境配置与初始化 深入配置与
git init,忽略规则 .gitignore 深入 把杂物挡在仓库外,基础操作 完成 init、add、commit 第一次全流程,三棵树 把本文一笔带过的「暂存区」拆开讲透; - 更远:分支(100 篇)是协作墙的进阶解法,远程仓库(150 篇)是「GitHub 那一步」。
官方文档
- Git 自我介绍(三分钟版):https://git-scm.com/about
- Pro Git 官方免费书中文版:https://git-scm.com/book/zh/v2
- 文档总入口:https://git-scm.com/doc
自我检查
- 不看本文,能说出版本控制解决的三件事,各配一个真实场景;
- 能纠正「GitHub 就是 Git」的说法;
- 能说出
.git目录是什么,以及手动删掉它的后果; git命令报「找不到」时,知道第一步先想什么。
本章总结
版本控制把「复制文件夹改名」的三堵墙拆成自动化:快照存档、任意回退、协作合并。Git 是本机工具,GitHub 是放仓库的网站,先学前者的命令再学后者的协作。仓库是「文件 + 账本」,工作区是你正在改的文件,提交是带署名的快照——这三个词是后面所有章节的地基。
下一步
进入 安装与配置:装好只是开始,配置才是你在每条提交历史里的签名。