这是我参与「第三届青训营 -后端场」笔记创作活动的的第三篇笔记
Git的正确使用姿势
为什么要学习Git?
- 协同工作: 因为绝大多数的公司都是基于Git进行代码管理,因此学会Git是每个程序员必备的技能。
- 开源社区:目前绝大多数的开源项目都是基于Git维护,参与这些项目开发都需要使用Git。 因此学习并运用Git是我们以后在公司业务操作的一项基本技能
Git是什么?
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. ——Git是一个免费的开源分布式版本控制系统,可以快速高效地处理从小到大的所有项目。 这是官方对于Git的释义,其中最关键的便是
distributed version control system(分布式版本控制系统) 本地版本控制
版本控制
本地版本控制——RCS
- 依托于本地磁盘进行版本控制 缺点明显:由于是依托于本地的磁盘进行版本控制,导致了没有办法及时进行同步更新,进而无法更便捷有效的进行团队写作
集中式版本控制——SVN
- 存在一个统一的远端服务器,用于版本控制,本地不存储版本控制
- 优点:
- 学习简单,更容易操作
- 支持二进制文件, 对大文件支持更友好
- 缺点:
- 本地不存储版本管理的概念,所有提交都只能联上服务器后才可以提交
- 分支上的支持不够好,对于大型项目团队合作比较困难
- 用户本地不保存所有版本的代码,如果服务端故障容易导致历史版本的丢失。
- 优点:
分布式版本控制——Git
- 每个库都拥有所有的版本控制信息,远端服务器用于不同库之间进行版本信息同步
- 优点:
- 分布式开发,每个库都是完整的提交历史,支持本地提交,强调个体
- 分支管理功能强大,方便团队合作,多人协同开发
- 校验和机制保证完整性,一般只添加数据,很少执行删除操作,不容易导致代码丢失
- 缺点:
- 相对SVN更复杂,学习成本更高
- 对于大文件的支持不是特别好(git-Ifs 工具可以弥补这个功能)
- 优点:
Git的基本使用方式
Git的基本命令
Git的研发流程
-
集中式工作流
- 只依托于master分支进行研发活动
-
工作方式
- 获取远端的master代码
- 直接在master分支完成修改
- 提交前拉取最新的master代码和本地代码进行合并(rebase),如果有冲突则需要解决冲突
- 提交本地代码到master