Git 的正确使用姿势与最佳实践其一|青训营笔记

59 阅读3分钟

1.为什么要学习Git?|青训营笔记

1.1协同工作

业界绝大数公司都是基于Git进行代码管理,因此Git是一个程序员的必备技能

1.2开源社区

目前绝大数的开源项目都是基于Git维护的,参与这些项目的开发都需要使用Git

1.3版本控制

1.3.1Git是什么?

Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。

1.3.2版本控制是什么?

一种记录一个或若干文件的内容变化,以便将来查阅特定版本修订情况的系统

1.3.3为什么需要版本控制?

更好的关注变更,了解到每个版本的改动是什么,方便对改动的代码进行检查,预防事故发生;也能够随时切换到不同的版本,回滚误删误改的问题代码.

版本控制类型代表性工具解决的问题
本地版本控制RCS本地代码的版本控制
集中式版本控制SVN提供一个远端服务器来维护代码版本,本地不保存代码版本,解决多人协作问题
分布式版本控制Git每个仓库都能记录版本历史,解决只有一个服务器保存版本的问题

1.3.4本地版本控制

▲最初的方式

通过本地复制文件夹,来完成版本控制,一般可以通过不同的文件名来区分版本

▲解决方案

开发了一些本地的版本控制软件,其中最流行的是RCS

▲基本原理

本地保存所有变更的补丁集,可以理解就是所有的Diff,通过这些补丁,我们可以计算出每个版本的文件内容

▲缺点

RCS这种本地版本控制存在最致命的缺陷就是只能在本地使用,无法进行团队协作,因此使用的场景非常有限,因此衍生出了集中式版本控制

1.3.5集中版本控制

代表性工具:SVN

▲基本原理:

1.提供一个远端服务来保存文件,所有用户的提交都提交到该服务器中

2.增量保存每次提交的Diff,如果提交的增量中和远端现存的文件存在冲突,则需要本地提前解决冲突

▲优点:

1.学习简单,更容易操作

2.支持二进制文件,对大文件支持更友好

▲缺点:

1.本地不存储版本管理的概念,所有提交都只能联上服务器后才可以提交

2.分支上的支持不够好,对于大型项目团队合作比较困难

3.用户本地不保存所有版本的代码,如果服务端故障容易导致历史版本的丢失

1.3.5分布式版本控制

代表性工具:Git

▲基本原理

1.1.3分布式版本控制

代表性工具: Git

基本原理:

1.每个库都存有完整的提交历史,可以直接在本地进行代码提交

2.每次提交记录的都是完整的文件快照,而不是记录增量

3.通过Push等操作来完成和远端代码的同步

▲优点:

1.分布式开发,每个库都是完整的提交历史,支持本地提交,强调个体

2.分支管理功能强大,方便团队合作,多人协同开发

3.校验和机制保证完整性,一般只添加数据,很少执行删除操作,不容易导致代码丢失

▲缺点:

1.相对SVN更复杂,学习成本更高

2.对于大文件的支持不是特别好(git-lfs 工具可以弥补这个功能)