版本控制工具 | 青训营笔记

261 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记。

版本控制工具分为本地版本控制、集中式版本控制和分布式版本控制三种类型。本地版本控制的代表工具是RCS,仅能解决本地代码的控制问题。

集中版本控制的代表工具是SVN。它提供了一个远端服务来保存文件,所有用户的提交都需要提交到该服务器中;同时,它增加保存每次提交的diff,即代码文件上的变化。如果提交的diff中与远程仓库现存的文件存在冲突,则需要本地提前解决冲突再提交。

SVN的优点是学习简单,更容易操作;支持二进制文件,对大文件支持更友好。SVN的缺点:一是本地不存储版本管理的概念,所有提交都只能提交到远程仓库;二是分支支持不能差强人意,导致大型项目团队间合作比较困哪;三是用户本地不保存所有版本的代码,如果服务器故障,容易导致历史版本丢失。

分布式版本控制工具解决了上述痛点,代表工具是Git。Git的每个库都存有完整的提交历史,可以直接在本地进行commit;Git每次提交记录都有完整的文件快照,而不是仅记录摘要;Git通过push pull等操作完成与远程仓库的同步。

Git的优点:一是分布式开发,每个库都有完整的提交历史,支持本地提交,强调分布式;二是分布整理功能强大,方便团队合作和多人协同开发;三是保证完整性的校验、机制完善,一般只添加数据,很少执行删除操作,不容易导致代码丢失。Git的缺点:一是相对SVN更复杂,学习成本相对更高;二是对大文件的支持较差(可以采用git-lfs工具绕过)。