git学习笔记
git
1. git的用途
git是一个开源的分布式版本控制系统
-
为什么要做版本控制?
- 代码备份:本地有一份代码,为了防止遗失,需要将代码备份至服务器,这个备份操作就是由git完成的。
- 多人协作:当一个项目需要多人协作的时候,A修改的代码版本被称为版本a,B修改的代码版本被称为版本b,但最终两个版本是针对不同功能的修改,需要将两个功能合并,git需要记录不同的版本并完成不同版本之间的合并。
- 版本回退:当提交的代码出现了bug,需要回退到上一个没有问题的版本。
- 版本记录:代码随着不断迭代变得冗余,需要知道清晰的版本开发记录,不同代码的提交人,以便后续的追责。
-
git为什么要设计成分布式的?
git分布式的设计可以集众人之力将产品优化迭代的更好。版本控制的工具主要分为集中式(例如 SVN)和分布式(例如 git)两种类型。在集中式版本控制设计中,只有中心服务器拥有最新的完整版本库,每当一个开发者需要开发新功能或者更改原有功能,需要pull中心服务器上最新的代码,修改过后再push到中心服务器上,但不是说每个人都有权限对中心服务器进行pull和push,这个权利被限制在少数人手上。但是git的设计思想则是人人平等,每个人手上都可以有原材料(完整的版本库),你可以去学习原材料的结构,也可以利用原材料去创造你自己需要的产品,还能和那些和你拥有一样原材料的人交流分享彼此的创意。git的分布式设计思想是以产品为先,而不是说是以个人利益、公司利益为先,这样的设计使得开源社区欣欣向荣。
2. git工作区、暂存区和版本库
git设计了三个不同的区域,分别是工作区、暂存区和版本库,它们的作用如下所示:
- 工作区:存放项目代码的工作目录
- 暂存区:即将提交到版本库的文件清单 暂存区的设计可以使得我们有选择性地提交文件。假设在一个项目中我修改了7个文件,其中2个文件是功能A,另外5个文件是功能B,在没有暂存区的情况下,代码提交过程中功能A和功能B的代码混合,而暂存区的存在使得我们可以有选择性的提交文件,就相当于文件的勾选功能。
- 版本库:可安全存放所有版本的代码文件
文件可以通过git命令在不同的区域进行相互转换,其转换关系如下图所示:
3. git的基本操作
4. 学习git的资料
Pro Git书籍:https://git-scm.com/book/zh/v2