前置知识: 零基础起步

Git 是什么:你早就需要版本控制,只是一直用文件夹硬扛

9 min入门

从论文终稿.doc、终稿2.doc、真的最终版.doc 的文件夹存档史讲起,讲清版本控制解决什么、Git 与 GitHub 的区别、仓库/提交/工作区三个最小概念;全篇只有一个动手任务 git --version,安装、配置、操作全部指路后续篇目。

知识点地图

  • 知识类别:版本控制与 Git 的入门概念——「为什么需要版本控制」这一前置问题,不涉及具体命令。
  • 解决什么问题:用复制文件夹改名硬扛版本的三堵墙——分不清哪个最新、改坏了回不去、多人协作对不上版本。
  • 什么时候用到:第一次接触 Git 之前建立认知地基;向别人解释 Git 与 GitHub 的区别;新项目启动时说服自己(或团队)先建仓库再动手。

前置知识

缺哪条都不致命:本文是概念篇,动手任务只有一条命令,每步都有完整命令与预期输出。

学习目标

读完本文你将能够:

  1. 说出版本控制解决的三件事:存档、后悔药、协作,并各举一个自己踩过的坑;
  2. 一句话分清 Git 与 GitHub:一个是装在电脑上的工具,一个是放仓库的网站;
  3. 用不超过两句话解释仓库、提交、工作区这三个词;
  4. 遇到 git: command not found 这类报错时,按「读报错三步」定位到两种可能原因。

预计 20 分钟。安装去 安装与配置,日常操作去 基础操作,本文只负责让你在动手前知道自己为什么需要它。

1. 问题:论文终稿.doc、终稿2.doc、真的最终版.doc

毕业论文、设计稿、游戏策划案……你是不是也这样存过:

text
论文/
  论文终稿.doc
  论文终稿2.doc
  论文终稿-真的最终版.doc
  论文终稿-真的最终版-导师批注.doc
  论文终稿-真的最终版-0903.doc

用复制文件夹硬扛版本,迟早撞上三堵墙:

  • 哪个是最新的? 文件名写日期靠自觉,拷错一份就是灾难;
  • 改坏了想退回去? 上一版被覆盖就永远没了;
  • 两个人一起改? 同学发来的「最新版」和你手里的「最新版」是两份不同的文件,谁对谁错只能人肉逐段比对。

这三堵墙,工程上有个专门的工具来拆,叫版本控制系统(Version Control System,VCS)。它把手工三件套自动化:

你手工做的版本控制替你做的
复制整个文件夹改名「终稿2」一条命令存一次快照,自动记下时间、作者、改了什么
翻回收站、找旧备份盘随时回到任何一次快照,历史永久保留
微信传文件来回对版本每人各自存快照,合并时自动对齐,冲突了明确指出哪一行打架

Git 是目前世界上使用最广的版本控制系统。你接下来要学的所有命令,都是在跟这张表的第二列打交道。

2. 动手:全篇唯一的实验

打开终端(Windows 用 Git Bash,macOS 用「终端」),输入:

bash
git --version

预期输出(数字不必相同,以 git version 开头即成功):

text
git version 2.51.0

这条命令只回答一个问题:Git 装好了没有。它不进目录、不改文件,在哪个文件夹运行结果都一样。

如果输出是下面两种之一,说明系统找不到 git 这个程序:

text
bash: git: command not found
text
'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 节那两条报错,值得当成第一个调试案例:

  1. 报错在说什么:系统想执行名为 git 的程序,但翻遍了 PATH 里登记的所有目录都没找到(PATH 机制见 终端与命令行入门,更多排错在 环境变量与 PATH);
  2. 只有两种可能:没装,或者装了但系统不知道(刚装完没重开终端,旧窗口读不到新 PATH);
  3. 对症处理:重开终端再试;仍失败就回 安装与配置 重装,Windows 安装时确认勾选「添加到 PATH」。

PowerShell 用户看到的变体是:

text
git : 无法将"git"项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

同一个病因,换个说法而已。以后看到任何「command not found / 不是内部或外部命令」,都是这套三步。

6. 实际项目场景:FANDEX 自己就是活教材

你正在读的这套教程,来自一个叫 FANDEX 的仓库:装着网站端、桌面端、Android 端和全部教学内容的 monorepo,2900 多个纳入版本管理的文件、500 多次提交。三个可查证的事实:

  1. 第一次提交在 2026 年 7 月 22 日,信息是 feat: initialize FANDEX monorepo with web/desktop/android subprojects——一个仓库的出生证明,一条可回溯的历史;
  2. 提交信息有固定习惯:一行说清这回改了什么,前缀标类型——feat: 新功能、fix: 修 bug、docs: 改文档、chore: 杂务。半年后翻历史,不用打开内容就知道当时在干嘛;
  3. 每次合入前都有独立分支与审查记录——这靠手工文件夹根本做不到。

你写课程作业、个人项目,用同样的循环(改文件、存快照、说明写清楚)就能享受到同款能力。这不是大厂专属,是每个写代码的人的日常。

练习

预测题(5 分钟,先写答案再运行):

  1. git --version 的输出以哪两个词开头?
  2. 换个文件夹再运行一次,输出会变吗?为什么?

修 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 那一步」。

官方文档

自我检查

  • 不看本文,能说出版本控制解决的三件事,各配一个真实场景;
  • 能纠正「GitHub 就是 Git」的说法;
  • 能说出 .git 目录是什么,以及手动删掉它的后果;
  • git 命令报「找不到」时,知道第一步先想什么。

本章总结

版本控制把「复制文件夹改名」的三堵墙拆成自动化:快照存档、任意回退、协作合并。Git 是本机工具,GitHub 是放仓库的网站,先学前者的命令再学后者的协作。仓库是「文件 + 账本」,工作区是你正在改的文件,提交是带署名的快照——这三个词是后面所有章节的地基。

下一步

进入 安装与配置:装好只是开始,配置才是你在每条提交历史里的签名。