1、为什么我们需要git?
进行版本管理
- 举例:你在大学中写论文
- 写论文的时候会出现很多个版本,每个版本都有自己特点
- 论文v1.doc:最基本的论文框架
- 论文v2.doc:添加了一个段落
- 论文v3.doc:修改了一行
- 论文v4.doc:添加的那个段落删除,保留的修改的那一行,再修改一行
- 论文v5.doc:恢复删除的那个段落,保留修改的行
- 问题1:如果我想
回到某个版本
怎么办?- 手动的管理和记录每个版本之间的变化
- 问题2:如果我让别人帮我写,我自己也写,我想将
别人写的部分和我写的部分合并
怎么办?- 论文有10个部分,10个人来写,我需要合并
- 我觉得有个人写的不好,我要重写它的,再合并
- 问题3:所有的操作都在
手动管理,极其容易出现错误
- 项目开发会存在同样的问题
- 整个项目由多个人共同开发,每个人开发的模块可能一样也可能不一样
- 不一样:每个人负责不同的 功能模块
- 一样:多个人共同负责一个模块
- 问题4:代码会产生多个版本,版本如何控制?
毕竟需求有时候不是那么明确的啊~~~
- 这个版本中没有这个功能,但是我下个版本想要这个功能,下下一个版本这个功能又不需要了
产品
- v1:A、B
- 原来的版本,有A和B两个功能
- v2:A、C
- 去掉了B功能,添加了C功能
- v3:A、B、C
- 添加了B这个功能
- 如何实现多个人共同开发一个项目,能将项目的多个版本进行自由方便的管理
- 甲:今天开发了一个版本,保存这个版本
- 乙:基于甲昨天开发的版本,进行继续开发
- 丙:负责开发另外一个版本
2、git的诞生
- 项目版本管理工具:
能自动的将多个版本进行存储,类似于快照,多个人共享版本
- Git:分布式项目管理工具,目前整个行业内最流行最受欢迎的项目版本管理工具
- 开发者:Linus Torvalds
- 小故事开讲
- Linux诞生以后,全球很多开发者开发了 很多个版本的Linux,提交给Linus Torvalds
- Linus Torvalds 将优秀的代码集成在Linux内核中,手动管理所有的代码
- Linus Torvalds 不喜欢传统的免费CVS等工具,因为这些工具不好用,好用的都收费
- Linus Torvalds 选择了一个商业化的工具,达成协议–>可以免费使用
- 于是团队中的一个哥们有个想法:–>能不能破解这个东西?
- 被发现了–>Linus Torvalds 保证不再破解
- 两周以后,Linus Torvalds 自己用C语言开发了Git,使用了类似于Linux的管理方式
- Linus Torvalds :将Linux的版本控制切换到Git上
- Git的开发
汲取了其他的版本控制工具的优点,避免了缺点
大佬的思维啊~~~
3、版本控制工具的对比
集中式:SVN
- 所有版本的代码都集中在SVN的服务器上
- 任何一个开发者,都只能连接SVN服务器,下载代码和上传新的版本
- 集中式:所有的开发都围绕SVN服务器为核心
- 缺点
必须联网
- 局域网:还是比较快的,但是回家以后就没办法开发了
- 在公司下载好
- 回家开发,只能开发一个版本
- 回到公司上传这个版本
- 互联网:
特别慢
- 在任何一个地方连接SVN服务器,进行下载和上传
- 自己无法自动管理多个版本
- SVN服务器存在
单点故障
分布式:Git
- 去中心化模式
- 优点
不需要联网
,自己的笔记本就是个本地版本库,直接利用自己的笔记本实现版本的管理- 自己可以管理任意多个版本
- 不需要担心公共的版本库故障,
每个人的本地都有版本库
4、特点
- 适合于
分布式开发
,多人可以共同开发,强调个体 - 公共的版本库服务器的压力不会太大
速度快、更加灵活
- 任意的开发者之间如果
产生冲突也容易解决
不需要联网
也可以实现多版本管理