这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
一、Git是什么
- 版本控制的概念:一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统
- 版本控制的原因
- 更好的关注变更,了解到每个版本的改动是什么,方便对改动的代码进行检查,预防事故发生
- 也能够随时切换到不同的版本,回滚误删误改的问题代码
- 版本控制的迭代
- 本地版本控制:RCS
- 最初是通过本地复制文件夹,并且通过不同的文件名来区分版本来完成版本控制
- 然后就进化,希望可以自动化,开发了一些软件,最流行的是RCS。基本原理是在本地保存所有变更的补丁集,可以理解成就是所有的Diff,通过这些补丁,我们可以计算出每个版本的实际的文件内容.
- 缺点:RCS这种本地版本控制存在最致命的缺陷就是只能在本地使用,无法进行团队协作,因 此衍生出了集中式版本控制
- 集中式版本控制
- 基本原理:
- 提供一个远端服务来保存文件,所有用户的提交都提交到该服务器中
- 增量保存每次提交的Diff,如果提交的增量中和远端现存的文件存在冲突,则需要本地提前解决冲突
- 缺点:
- 所有提交都只能联上服务器后才可以提交
- 分支上的支持不够好,对于大型项目团队合作比较困难
- 用户本地不保存所有版本的代码,如果服务端故障容易导致历史版本的丢失
- 基本原理:
- 分布式版本控制
- 基本原理:
- 每个库都存有完整的提交历史,可以直接在本地进行代码提交
- 每次提交记录的都是完整的文件快照,而不是记录增量(这样比较就更加鲜明)
- 通过Push等操作来完成和远端代码的同步
- 缺点:
- 相对SVN更复杂,学习成本更高
- 对于大文件的支持不是特别好(但git-lfs工具可以弥补这个功能)
- 基本原理:
- 本地版本控制:RCS