版本控制是每个软件开发者必须掌握的核心技能,它解决了两个核心痛点:代码版本回溯和多人协同开发。本篇博客带你对比学习当今最主流的两大版本控制工具:Git(分布式)与 SVN(集中式),重点掌握 Git 的完整工作流。
一、为什么需要版本控制?
1.1 两大核心目的
版本控制:记录文件每次变更,随时可以回退到历史版本,再也不怕"改崩了找不回来"
多人协同:多个开发者同时修改同一项目,自动合并各自修改,解决代码冲突
没有版本控制的日常:
有了版本控制:只需要一个文件,每次提交自动记录变更历史。
二、Git vs SVN 核心区别
三、Git 四大核心概念
Git的工作流围绕四个区域层层递进:
四、Git 安装与首次配置
Git 官网:Git
Windows 下载安装包一路Next(勾选添加到PATH)
Linux:
sudo apt install gitMac:
brew install git
4.1 用户身份配置(必须!)
每次提交代码都会记录"是谁提交的",所以需要配置用户名和邮箱。
全局用户(针对电脑上所有 Git 项目)
配置文件位置:
Windows:
C:\Users\Administrator\.gitconfigLinux/Mac:
~/.gitconfig
局部用户(只针对当前项目,优先级 > 全局)
配置文件位置:项目目录/.git/config
五、Git 基础工作流(本地仓库)
5.1 初始化仓库:git init
将一个普通文件夹变成Git管理的项目,生成隐藏目录.git(里面是Git所有数据,不要手动删除)。
5.2 查看状态:git status
Git最常用的命令,随时掌握当前仓库的情况。
输出信息解读:
5.3 提交三部曲
第一步:git add — 工作区 → 暂存区
撤销 add(从暂存区撤回到工作区)
第二步:git commit — 暂存区 → 本地仓库
第三步:查看提交日志
5.4 撤销本地修改(工作区还没 add)
5.5 版本穿越:git reset
随时回到历史任何一个版本!
⚠️ 注意:--hard会丢弃所有未提交的修改!如果回到旧版本后想再回来,用git reflog查找新版本的版本号再 reset 回去。
六、分支管理(Git 灵魂功能)
6.1 什么是分支?
分支就是一条独立的开发线。典型工作模式:
项目初始只有一条主分支
master(或main),包含稳定可发布的代码从主分支创建子分支,子分支内容完全复制自主分支
在子分支上开发新功能/修复bug,完全不影响主分支
功能开发测试完成后,合并回主分支
6.2 分支常用命令
⚠️合并冲突:当两个分支修改了同一文件的同一行时,Git无法自动合并,会报 conflict。此时需要人工打开冲突文件,找到<<<<<<<=======>>>>>>>标记的区域,手动选择保留谁的代码,改完后git add . && git commit完成合并。
七、远程仓库(多人协作核心)
7.1 远程仓库选择
7.2 本地仓库关联远程仓库
在Gitee/GitHub创建一个空仓库后,会给出关联命令:
7.3 多人协作典型工作流
每人从master创建自己的功能分支:
git switch -c feature-xxx在自己分支开发,频繁commit,频繁push到远程自己的分支
开发完成后,发起 Pull Request (PR) / Merge Request (MR):请求把自己的分支合并进master
Code Review(代码审查):同事审查你的代码,通过后合并
合并后删除功能分支,同步最新master:
git switch master && git pull
八、Git 命令全景速查
九、SVN 快速入门(补充)
SVN是集中式版本控制,所有版本集中在中央服务器,本地没有完整仓库。
9.1 核心命令对比 Git
9.2 SVN工作流(与Git对比)
十、编辑器自带 Git 插件(可视化操作)
除了命令行,现代编辑器/IDE几乎都内置了友好的Git图形化功能,不需要记命令:
总结
版本控制不是一次性学会的,需要在真实开发中不断练习。建议从今天开始,你写的所有代码项目都用Git管理起来,哪怕是个人学习项目。坚持几个月,你就会对它烂熟于心。