Git 是一个 版本控制系统(Version Control System,VCS),它的主要作用是帮助我们记录文件,尤其是代码,在不同时间发生过哪些变化。你可以把 Git 理解成一个专门为开发项目设计的“历史记录工具”:它不仅知道现在的代码是什么样,还能知道以前是什么样、谁修改过、修改了什么,以及这些修改是什么时候发生的。
如果没有 Git,很多初学者可能会通过不断复制文件夹来保存不同版本。例如,一个项目可能慢慢变成下面这样:
my-project
my-project-v2
my-project-final
my-project-final-new
my-project-final-really-final项目很小时,这种方式似乎还能用,但一旦开发时间变长,就很容易弄不清楚哪个才是最新版本,也很难知道两个版本之间到底改了什么。Git 解决的正是这个问题。使用 Git 后,我们通常只需要保留一份项目文件,然后让 Git 去记录每一次重要的修改。
在 Git 中,我们把一次正式保存修改记录的操作称为 提交(Commit)。你可以暂时把 Commit 理解成给项目当前状态拍了一张“快照”。例如,你先创建了一个网站,然后添加登录页面,之后又修复了一个登录 Bug,那么 Git 中可能会留下这样的提交记录:
Commit 1: 创建项目
Commit 2: 添加登录页面
Commit 3: 修复登录问题这样做的好处是,当项目出现问题时,你不需要靠记忆去猜之前改了什么,而是可以直接查看历史记录。比如你可以知道某个文件什么时候被修改过、一次修改具体增加或删除了哪些代码,也可以查看某个功能在之前版本中的状态。
Git 在多人开发中也非常重要。假设一个团队里有三个人同时开发网站,一个人负责登录功能,一个人负责用户页面,另一个人负责支付功能。Git 可以让他们分别在自己的 分支(Branch) 上进行开发,等功能完成后再把代码合并起来。这样可以减少大家同时修改同一份代码时产生的混乱。后面的内容会专门介绍 Branch。
Git 和 GitHub 有什么区别?
Git 和 GitHub 经常一起出现,所以初学者很容易认为它们是同一个东西,但实际上两者完全不同。Git 是安装在电脑上的版本控制工具,而 GitHub 是一个用于存放和协作开发 Git 项目的在线平台。
你可以简单理解为:
你的电脑
Git:管理代码版本
GitHub:在线保存和协作管理 Git 项目
即使没有 GitHub,你依然可以在自己的电脑上使用 Git,创建 Commit、查看历史记录或者创建 Branch。GitHub 则进一步解决了团队协作和远程保存的问题,例如你可以把自己的代码上传到 GitHub,让其他开发者下载,也可以使用 Pull Request、Issues 和 CI/CD 等功能。这些内容会在后面的章节中介绍。
因此,在刚开始学习时,只需要先记住一个最简单的区别:Git 是版本控制工具,GitHub 是托管 Git 项目并提供协作功能的在线平台。
知识测验
练习
你的同学用 project-final、project-final-new 和 project-really-final 保存作业。请指出这种方式的两个具体问题,并解释 Git 能分别怎样改善它们。