Git 的正确使用姿势
1、Git基础
主要负责为公司提供统一的代码托管、代码智能、代码分析、持续集成、Cloud IDE等服务,帮助研发高效地开发&管理代码。
| 方向 | 具体能力 |
|---|---|
| 代码托管 | 负责管理公司内数十万的代码仓库,并在这之上对代码管理的相关功能进行迭代,提升研发活动的效率及质量 |
| 代码智能 | 提供更准确高效的代码搜索能力和代码导航能力,支持多种场景下的代码跳转,帮助用户更高效的去阅读代码 |
| 代码分析 | 提供一种代码检查能力,目的是在整个研发流程中自动的发现并反馈代码中存在的代码结构、代码漏洞、代码风格等问题 |
| 持续集成 | 一种软件开发实践,团队成员频繁将他们的工作成果集成在一起。每次提交后,自动触发运行一次包含自动化验证集的构建任务,以便能尽早发现集成问题 |
| Cloud IDE | 一个开箱即用的云端开发环境,支持node/python/go/java/c++等多种编程语言。你可以在云端开发环境中编写、编译、运行和调试你的项目 |
协同工作
业界绝大多数公司都是基于 Git 进行代码管理,因此 Git 是一个程序员的必备技能
开源社区
目前绝大数的开源项目都是基于 Git 维护的,参与这些项目的开发都需要使用Git
2、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.
版本控制是什么?
一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统
为什么需要版本控制 ?
更好的关注变更,了解到每个版本的改动是什么,方便对改动的代码进行检查,预防事故发生; 也能够随时切换到不同的版本,回滚误删误改的问题代码
1.本地版本控制
最初的方式
通过本地复制文件夹,来完成版本控制,一般可以通过不同的文件名来区分版本
解决方案
开发了一些本地的版本控制软件,其中最流行的是RCS
基本原理基本原理
本地保存所有变更的补丁集,可以理解成就是所有的Diff,通过这些补丁,我们可以计算出每个版本的实际的文件内容本地保存所有变更的补丁集,可以理解成就是所有的diff,通过这些补丁,我们可以计算出每个版本的实际的文件内容
2.集中版本控制
代表性工具: SVN
基本原理:
1.提供一个远端服务来保存文件,所有用户的提交都提交到该服务器中
2.增量保存每次提交的Diff,如果提交的增量中和远端现存的文件存在冲突,则需要本地提前解决冲突
优点:
-
学习简单,更容易操作
-
支持二进制文件,对大文件支持更友好
缺点:
-
本地不存储版本管理的概念,所有提交都只能联上服务器后才可以提交
-
分支上的支持不够好,对于大型项目团队合作比较困难
-
用户本地不保存所有版本的代码,如果服务端故障容易导致历史版本的丢失。
代表性工具: Git
基本原理:
-
每个库都存有完整的提交历史,可以直接在本地进行代码提交
-
每次提交记录的都是完整的文件快照,而不是记录增量
-
通过Push等操作来完成和远端代码的同步
优点:
- 分布式开发,每个库都是完整的提交历史,支持本地提交,强调个体
- 分支管理功能强大,方便团队合作,多人协同开发
- 校验和机制保证完整性, 一般只添加数据,很少执行删除操作,不容易导致代码丢失
缺点:
- 相对SVN更复杂,学习成本更高
- 对于大文件的支持不是特别好(git- -Ifs工具可以弥补这个功能)