讲解

想象你在写一份重要文档:改到一半想试试另一种写法,于是复制一份「文档-v2.docx」,过几天又出现「文档-最终版.docx」「文档-最终版-真的最终.docx」。版本一多,谁也说不清哪份是最新的、哪次改动引入了错误。版本控制要解决的就是这个问题:完整记录每一次修改,随时可以查看历史、对比差异、回到任意一个过去的版本。

Git 是目前事实标准的版本控制工具,由 Linux 之父 Linus Torvalds 在 2005 年为管理 Linux 内核源码而开发。它是分布式的:每个开发者的电脑上都有完整的仓库和历史记录,不联网也能提交、查看日志、创建分支,联网后再和别人同步。这与老一代集中式工具(如 SVN)有本质区别——集中式工具离了服务器几乎什么都不能做。

围绕 Git 形成了一个庞大的协作生态:GitHub、GitLab、Gitee 等平台把 Git 仓库托管到云端,并提供 Pull Request、代码评审、Issue 管理等协作功能。要注意区分:Git 是工具本身,GitHub 是托管 Git 仓库的网站,两者不是一回事。学会 Git 是几乎所有开发岗位的基本功,本教程从安装讲起,覆盖日常使用、分支协作和事故自救的完整闭环。

示例

下面三条命令在一个已经初始化好的演示仓库里执行(后面的章节会教你如何创建),先感受一下 Git 的日常面貌:

git --version
git log --oneline
git status

git log 列出提交历史(每行一个提交:哈希前缀加提交信息),git status 报告当前工作区的状态。这两条命令你会每天用到无数次。

常见坑

  • 把 Git 和 GitHub 混为一谈:Git 是本地工具,不注册任何账号也能用;GitHub 只是托管平台之一,还有 GitLab、Gitee 等替代品。
  • 以为版本控制只管代码:Git 擅长管理任何文本文件——文档、配置、论文。但大体积二进制文件(视频、PSD)不适合,每次改动都会完整存一份,仓库会急剧膨胀。
  • 把 Git 当网盘同步:Git 的同步是显式的(push/pull),不是自动实时同步。忘记 push 的提交只存在于你自己的电脑上。
  • 一开始就想记住所有命令:Git 有上百个子命令,但日常 95% 的工作只用其中十几个。跟着教程逐章练,用到再查。

小结

Git 是分布式版本控制工具,完整记录文件的修改历史,支持离线工作,是现代开发协作的地基。GitHub 等平台在其上提供托管与协作服务。下一节先把 Git 装好并完成初始配置。