第3章:版本控制入门

说实话,我刚入行那会儿,对版本控制这事挺不以为然的。

不就是存个代码历史吗?用文件夹备份不就行了?

直到有一次,我花了三天改了一个功能,结果发现方向全错了。想回退到三天前的版本,翻遍了文件夹,愣是找不到哪个是最终版。文件名从 v1v_final_真的不改了,再到 v_final_2……嗯,那场面,别提多狼狈了。

从那以后,我彻底成了 Git 的忠实用户。今天咱们就来聊聊,版本控制到底是个啥,以及怎么上手。

3.1 Git 基础概念

Git 是个分布式版本控制系统。说白了,就是每个人电脑上都有一份完整的代码仓库,而不是只有服务器上有。

我经常跟团队新人说:Git 的核心,就是记录每一次文件的快照。你每次提交,Git 都会拍一张「照片」,存下当前所有文件的状态。这样你想回到哪张照片,随时都可以。

三个重要区域

  • 工作区(Working Directory):你正在编辑的代码文件
  • 暂存区(Staging Area):准备提交的改动,像个临时缓冲区
  • 仓库(Repository):Git 真正存储历史版本的地方

我个人习惯把暂存区理解成「购物车」。你先把要买的东西(改动的文件)放进去,最后统一结账(提交)。这样每次提交都是一个完整、有意义的改动集合。

3.2 常用命令详解

3.2.1 初始化与配置

# 初始化一个新仓库
git init

# 配置用户名和邮箱(第一次使用必须做)
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

我记得刚学 Git 时,忘了配用户名就直接提交了。结果提交记录里显示的是「unknown」。后来找了好久才改回来……所以第一步,先把身份信息配好。

3.2.2 日常操作三板斧

# 查看文件状态
git status

# 把文件加入暂存区
git add index.html
git add .   # 添加所有改动

# 提交到仓库
git commit -m "feat: 添加首页导航栏"

小技巧:提交信息要写清楚。我一般用「类型: 描述」的格式,比如 fix: 修复登录按钮点击无响应。这样看历史记录时,一眼就知道每次提交干了什么。

3.2.3 远程仓库操作

# 关联远程仓库
git remote add origin https://github.com/你的用户名/项目名.git

# 推送代码到远程
git push -u origin main

# 拉取远程最新代码
git pull

# 克隆远程仓库到本地
git clone https://github.com/用户名/项目名.git

你想想看,pushpull 就像上传和下载。我每次开始写代码前,都会先 git pull 一下,确保本地代码是最新的。不然写到一半发现冲突,那才叫头疼。

3.2.4 分支操作

# 查看所有分支
git branch

# 创建新分支
git branch feature-login

# 切换分支
git checkout feature-login

# 创建并切换(一步到位)
git checkout -b feature-login

# 合并分支(先切回目标分支)
git checkout main
git merge feature-login

注意:合并前一定要确保当前分支是你要合并到的目标分支。我曾经在 feature 分支上执行了 git merge main,结果把主分支的代码合到了功能分支上,搞得一团乱。

3.3 Git 工作流简介

工作流,说白了就是团队怎么用 Git 协作。我见过不少团队,虽然用了 Git,但各改各的,最后合并时冲突一大堆。

这里介绍三种常见的工作流:

工作流名称 核心思想 适用场景
集中式工作流 所有人都在 main 分支上开发 单人项目或极小型团队
功能分支工作流 每个功能开一个独立分支,开发完合并 中小型团队,最常用
Git Flow 有 main、develop、feature、release、hotfix 等多层分支 大型项目,有严格发布流程

我个人最推荐的是功能分支工作流。原因很简单:

  • 每个功能独立开发,互不干扰
  • 合并前可以做 Code Review
  • 出了问题只影响一个分支

我的建议:刚开始用 Git 时,别搞太复杂。先学会 addcommitpushpull 这四个命令,配合功能分支工作流,就能应付 90% 的场景了。

3.4 避坑指南

最后分享几个我踩过的坑:

  • 不要直接在主分支上开发。我曾经图省事,直接在 main 上改代码,结果改到一半发现要修个紧急 bug,但代码还没写完,没法提交……那叫一个尴尬。
  • 提交前先看 diff。用 git diff 看看改了哪些内容,避免把调试代码或敏感信息提交上去。
  • 养成频繁提交的习惯。每完成一个小功能点就提交一次,这样回退时损失最小。

嗯,Git 这东西,用多了就习惯了。刚开始可能会觉得命令多、概念抽象,但相信我,坚持用两周,你就会发现——没有 Git 的日子,简直不敢想象。

下一章咱们聊聊「包管理工具」,看看 npm 和 yarn 到底怎么选,以及怎么避免「依赖地狱」。