1. 版本控制的目的
版本控制的核心目的是记录文件内容的变化历史,让开发者能够回溯任意时间点的版本、对比不同版本之间的差异,并在多人协作时有效管理代码的合并与冲突。它解决了传统开发中「文件覆盖丢失」「无法追溯改动」「多人协作混乱」等核心痛点。
2. 版本控制与多人协同对比
在多人协同开发场景中,版本控制系统是团队协作的基础设施。它允许多名开发者同时修改同一项目,系统负责记录每个人的改动,并在提交时进行合并或提示冲突。通过版本历史,团队可以清晰看到谁在什么时间改动了哪些内容,从而提升协作效率和代码质量。
3. SVN 集中式版本控制
SVN(Subversion)是典型的集中式版本控制系统。它的核心特点是所有版本数据都存放在中央服务器上,开发者需要从服务器检出代码,修改后再提交回服务器。集中式架构的优点是管理简单、权限控制集中,但缺点是依赖网络连接,且中央服务器一旦故障,协作将受到影响。
4. Git 分布式版本控制
Git 是目前最流行的分布式版本控制系统。与集中式不同,Git 的每个开发者本地都拥有完整的仓库副本,包括全部历史记录。这意味着即使没有网络,开发者也可以独立提交、查看历史、创建分支。分布式架构带来了更高的灵活性和容错能力,也催生了 GitHub、Gitee 等基于 Git 的代码托管平台。
5. Git 核心概念
理解 Git 需要先掌握几个核心概念,它们是 Git 工作流的基础。
- 工作区(工作目录):即开发者本地实际编辑文件的目录,是直接可见、可操作的文件区域。
- 暂存区:用于存放即将提交的改动。开发者将工作区的修改通过 git add 添加到暂存区,暂存区相当于提交前的准备区域。
- 本地仓库:位于开发者本机的仓库,用于管理已经提交的版本历史。本地仓库保存了项目的完整快照和提交记录。
- 远程仓库:仓库位于服务器上,用于团队共享和备份代码。远程仓库是多人协作的中枢,开发者通过推送和拉取与远程仓库同步。
6. 远程仓库的搭建与选择
远程仓库可以自行搭建,也可以使用现成的托管平台。
- Linux 自己搭建服务器:在 Linux 服务器上安装 Git 并配置裸仓库,即可搭建私有远程仓库。这种方式适合对数据安全和控制权要求较高的团队。
- Gitee:国内流行的代码托管平台,提供免费的远程仓库服务,访问速度快,适合国内开发者使用。
- GitHub:全球最大的代码托管平台,拥有丰富的开源生态和社区资源,是开源项目协作的首选。
7. Git 常用命令实战
掌握 Git 的核心概念之后,还需要熟悉日常开发中最常用的命令。下面按照「初始化、提交、撤销、配置、分支、日志」六个维度,整理一份可直接上手的命令清单。
7.1 初始化与状态查看
- git init:将当前工作目录变为 Git 项目,生成隐藏文件 .git。
- git status:查看工作区状态。On branch master 表示位于主分支;白色表示正常;红色表示工作区有修改未提交;绿色表示暂存区内容没有提交。
7.2 提交与撤销
- git add .:将工作区的修改提交到暂存区。
- git rm --cached -r .:从暂存区撤销到工作区,使文件不再被仓库管理。
- git commit -m msg:将暂存区内容提交到本地仓库。
- git restore .:撤销本地修改。
- git restore --staged .:从暂存区撤销到工作区。
- git reset --hard 版本号前缀:切换版本。
7.3 用户配置
Git 提交时会记录提交者身份,因此需要先配置用户信息。用户配置分为全局用户和局部用户两种。
- 全局用户:针对电脑上的所有项目。配置命令为 git config --global user.email 496575233@qq.com 和 git config --global user.name zzy0371,配置文件位于 C:\Users\Administrator\.gitconfig。
- 局部用户:只针对当前项目,优先级高于全局。配置命令为 git config user.email 496575233@qq.com 和 git config user.name zzy0371,配置文件位于项目目录中的 .git/config。这个配置只会针对你的提交者身份,有记录。
7.4 分支管理
分支是 Git 协作开发的核心机制。从主分支创建子分支,子分支内容来源于主分支,开发完成以后合并到主分支。
- git branch:查看所有分支,以及当前分支。
- git branch -c 分支名:创建分支。
- git switch 分支名:切换分支。
- git branch -d 分支名:删除分支。
- git switch -c 分支名:创建并且切换分支。
- git merge 分支:将目标分支合并到当前分支。
7.5 日志查看
- git log:查看详细日志。
- git reflog:查看操作记录,包含版本切换记录。
8. SVN 使用实战
前面介绍了 SVN 的集中式管理思想,下面结合 Visual SVN 与 TortoiseSVN 两个工具,演示 SVN 从环境搭建到日常操作、再到版本导出的完整流程。
8.1 集中式管理
SVN 采用集中式管理,所有版本数据都存放在中央服务器上,个人开发者需要先连接到 SVN 服务器,才能进行检出、提交、更新等操作。
8.2 环境搭建
- 第一步:先下载 SVN 服务器,推荐使用 Visual SVN。
- 第二步:下载 SVN 客户端 TortoiseSVN。
- 第三步:通过搜索打开 SVN 可视化服务。
- 第四步:创建用户和仓库,仓库里面存放用户。回到资源管理器,选择一个空文件夹,右键 Check Out,相当于 Clone 仓库。
8.3 常用操作演示
- Checkout(检出/克隆):输入 URL 和账号密码即可完成检出。
- Commit(提交):新修改的内容需要提交到服务器上,形成提交记录、共享记录和共享文件。
- Show Log(查看提交日志):右键 TortoiseSVN 中的 Show Log,可以查看所有人的提交日志。
- Update(更新):右键 SVN Update,将服务器上的最新改动同步到本地。
8.4 导出某个具体版本
在 Show Log 中右键指定需要导出的文件,选择 Export,即可导出该文件的具体版本。
8.5 拓展
- Clean Up:当文件被锁定时,通过 Clean Up 清理锁定状态。
- 多次提交与导出:对文件修改多次、多次提交后,可通过 Export 导出具体版本。
- Blame:追溯某行内容是谁提交的。