2. 版本控制基础:Git的安装与配置、Git常用命令、分支管理策略、标签与发布
好,咱们进入正题。版本控制这件事,说白了就是给代码上「后悔药」。我见过太多团队还在用「最终版_v12_打死不改版.zip」这种命名方式,每次看到都头皮发麻。Git 这东西,你一旦用顺了,就再也回不去了。
2.1 Git的安装与配置
安装 Git 其实没什么难度。Linux 用户直接 apt install git 或者 yum install git,Mac 用户用 brew install git,Windows 去官网下载安装包就行。嗯,这里要注意一点:Windows 安装时记得勾选「将 Git Bash 添加到右键菜单」,不然你后面会很不方便。
装完之后第一件事是什么?配置身份信息。我刚开始用 Git 时犯过一个低级错误——没配用户名,结果提交记录里显示的是「unknown」,后来查代码是谁写的全靠猜。
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
我个人习惯还会配几个别名,省得每次敲长命令:
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.co checkout
git config --global core.autocrlf input。这能避免 Windows 和 Linux 换行符不一致导致的诡异问题。我曾经被这个坑过,一个文件明明没改,Git 却提示有改动,查了半天才发现是换行符在作怪。
2.2 Git常用命令
说实话,Git 命令上百个,但你日常用的就那么十几个。我列一下最核心的:
| 命令 | 作用 | 我的使用频率 |
|---|---|---|
git init |
初始化仓库 | 每周1-2次 |
git clone |
克隆远程仓库 | 每天 |
git add |
暂存文件 | 每天几十次 |
git commit -m |
提交到本地仓库 | 每天十几次 |
git push |
推送到远程 | 每天几次 |
git pull |
拉取远程更新 | 每天几次 |
git log |
查看提交历史 | 每天 |
git diff |
查看文件差异 | 每天 |
你想想看,这些命令其实就覆盖了 90% 的日常操作。我特别想强调 git diff 这个命令——很多人提交前不看改了啥,直接 git add . 然后 git commit,结果把调试代码也提交上去了。我的习惯是:提交前一定先 git diff 看一眼,确认无误再提交。
git add → 暂存区 → git commit → 本地仓库 → git push → 远程仓库
2.3 分支管理策略
分支管理是 Git 的精髓。我见过两种极端:一种是不用分支,所有人都在 master 上改,天天冲突;另一种是分支多到数不清,合并时根本不知道哪个是哪个。
我个人推荐的是 Git Flow 的简化版,适合中小团队:
- master 分支: 只放稳定版本,永远可部署。谁往 master 上直接 push 代码,我建议请他喝咖啡聊聊人生。
- develop 分支: 日常开发的主分支。所有功能分支都从这里拉出去,合并回来。
- feature 分支: 从 develop 拉出来,开发完再合并回去。命名规范:
feature/xxx。 - release 分支: 准备发布时从 develop 拉出来,只修 bug,不加新功能。
- hotfix 分支: 线上出紧急 bug 时,从 master 拉出来修,修完合并回 master 和 develop。
分支操作的核心命令:
# 创建并切换到新分支
git checkout -b feature/new-feature
# 查看所有分支
git branch -a
# 合并分支
git checkout develop
git merge feature/new-feature
# 删除分支(合并后清理)
git branch -d feature/new-feature
2.4 标签与发布
标签这东西,说白了就是给某个提交打个「记号」。我习惯在每次发布版本时打一个标签,这样以后想回滚到某个版本,直接 git checkout v1.2.3 就行,不用去翻 commit id。
标签有两种:轻量标签和附注标签。我个人只用附注标签,因为它包含了作者、日期、签名信息,更靠谱。
# 创建附注标签
git tag -a v1.0.0 -m "正式发布 v1.0.0 版本"
# 查看所有标签
git tag -l
# 推送标签到远程
git push origin v1.0.0
# 推送所有标签
git push origin --tags
版本号怎么定?我推荐语义化版本规范:
| 版本格式 | 含义 | 示例 |
|---|---|---|
| 主版本号 | 不兼容的 API 修改 | v2.0.0 |
| 次版本号 | 向下兼容的功能新增 | v1.3.0 |
| 修订号 | 向下兼容的问题修正 | v1.3.1 |
最后说一句:版本控制不是银弹,但它能帮你省下大量「找代码、问同事、猜改动」的时间。把 Git 用好了,你的自动更新服务器搭建之路就稳了一半。