目录
一、版本控制
版本控制
:是指记录一个或若干个文件的内容变化,以便将来查阅特定版本修订情况的系统。
1.1 为什么要使用版本控制?
- 有了版本控制,我们可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。(就算我们将项目中的文件改的面目全非,也可以轻松恢复到原先的样子。)
- 有了版本控制,我们可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致问题出现的原因等等。
常见的版本控制系统有两种:集中化的版本控制系统
、分布式的版本控制系统
。
1.2 集中化的版本控制系统
集中化的版本控制系统诸如:CVS
、svn
以及 Perforce
等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连接到这台服务器,取出最新的文件或者提交更新。在版本控制初期,这已成为版本控制系统的标准做法。
这种做法带来了好处,现在每个人都可以在一定程度上看到项目中的其他人正在做什么。而管理员也可以轻松掌握每个开发者的权限,并且管理一个集中化的版本控制系统要远比在哥哥客户端上维护本地数据库来得轻松容易。
1.3 分布式的版本控制系统
分布式版本控制系统诸如:Git、BitKeeper 等,客户端并不只是提取最新版本的文件快照,而是把代码仓库完整地拉取下来。这样,任何一处协同工作用地服务器发生故障,事后都可以用任何一个拉去下来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。
更进一步来看,许多这类系统都可以指定和若干不同的远程代码仓库进行交互。藉此,我们就可以在同一项目中分别和不同工作小组的人相互协作。
分布式的版本控制系统在管理项目时,存放的不是项目版本与版本之间的差异,它存的是索引(所需磁盘空间很少,所以每个客户端都可以放下整个项目的历史记录)。
1.3 两种版本控制系统对比
集中式(svn)
优点:
- 代码存放在单一的服务器上,便于项目的管理。
缺点:
- 由于存储的是文件差异,导致回滚的速度会很慢;
- 服务器宕机,员工写的代码得不到保障;
- 本地无法新建分支,每次需要在服务器新建分支;
- 服务器磁盘损坏,每个项目的历史记录都会丢失。
分布式(git)
优点:
- 由于存储的是索引,回滚速度极快;
- 分布式存储,不担心服务器宕机或损毁;
- 支持本地新建分支,操作方便。
缺点:
- 操作命令相比 svn 较多,存在学习成本。
二、发展历史
同生活中的许多伟大事件一样,Git 诞生于一个极具创造性的年代。
Linux 内核开源项目有着为数众多的参与者。1991-2002 年间,绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper
来管理和维护代码。
到了 2005 年,开发 BitKepper 的商业公司同 Linux 内核开源社区的合作关系结束。这就迫使 Linux 开源社区(特别是 Linux
的缔造者 Linux Torvalds/林纳斯·托瓦兹)不得不西区搅匀,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对于新的系统制定了若干目标:
- 分支切换速度快、容量小(压缩)、简单的设计、完全分布式
- 对非线性开发模式的强力支持(允许上千个并行开发的分支)
- 有能力搞笑管理类似 Linux 内核一样的超大规模项目(速度和数据量)
自诞生于 2005 年依赖,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。他的速度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理系统可以应付各种复杂的项目开发需求。
三、初始化配置
一般在新的系统上,我们都需要先配置下自己的 Git 工作环境。配置工作只需一次,以后升级时还会沿用现在的配置。当然,如果需要,我们随时可以用相同的命令修改已有配置。
3.1 配置文件
Git 提供了一个 git config
的命令来配置或读取相应的工作环境变量,而正是这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
/etc/gitconfig
文件:系统中对 所有用户 都普遍适配的配置。若使用git config --system
,读写的就是这个文件。~/.gitconfig
文件:用户目录下的配置文件只适用于 该用户 。若使用git config --global
,读写的就是这个文件。.git/config
文件:当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件)这里的配置仅仅针对 当前项目 有效。
注意:每一个级别的配置都会覆盖上层的相同配置。
3.2 配置内容
主要需要配置的是你个人的 用户名 和 邮箱地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,如何联系,所以会随更新内容一起被永久纳入历史记录。
shell
-- 配置用户名
git config --global user.name "ACGkaka"
-- 配置邮箱地址
git config --global user.email acgkaka@example.com
-- 查看配置信息
git config --list
-- 删除配置信息
git config --global --unset user.email
四、别名
Git 并不会在你输入部分命令时自动推断出你想要的命令。如果不想每次都输入完整的 Git 命令,可以通过 git config
文件来轻松为每一个命令设置一个别名。
例如:
shell
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
当要输入 git commit
时,只需要输入 git ci
即可。
整理完毕,完结撒花~ 🌻
参考地址:
1.【尚硅谷】深入Git底层原理丨一套掌握git版本控制系统,https://www.bilibili.com/video/BV1Yi4y137eF/