Git特点:
1.可以快速的切换项目分支.
2.回滚某个分支的版本.
3.每次切换分支不用修改配置文件 (因项目而定义)
4.不用 新建/切换 虚拟目录/域名.因为都是在同一个目录下进行.
什么是Git
Git是Linux Torvalds为了帮助管理 Linux,内核开发而开发的一个开放源码的版本控制软件特点是快速,开源,分布式管理系统它可以对代码的修改进行回滚,将错误的代码剔除或者简单地跟踪哪些人修改了代码的哪些行的内容.
对比:集中化的版本控制
集中化的版本控制系统通常采用两种方式:
有些提供了文件锁来防止多个用户的并行访问,这些系统对文件进行加锁,这样在某个时间只有一个开发人员对中心仓库具有写入权限.
另外一些工具,例如 SVN,允许多个开发人员同时对相同的文件进行编辑,并提供了一些机制稍后合并这些修改。
CVS,SVN 等工具都是代码部署到服务器上,每次需要远程更新到本地,解决冲突在此提交.
这样弊端很明显,如果这台服务器挂掉几个小时,可能在这几个小时内,你的代码都无法去提交.
配图详解:
图解: 代码都集中部署到一台服务器上,每台电脑需更新服务器上的代码,修改后提交到服务器上.
弊端:如果版本控制这台服务器挂掉,可能对整个项目开发都会造成影响,因为开发者都不能提交,其他人也无法获取到代码,最重要的是代码也无法时时的进行备份,改动大风险也更大.如果你在一个不能连接网络的地方时,就像在飞机上,火车上,或者某些无网络的情况下,就不能提交文件,查看历史版本记录,创建项目分支,等.
对比:分布式的版本控制
GIT跟SVN一样有自己的集中式版本库或服务器.
但GIT更倾向于被使用于分布式模式,也就是以每个开发人员为中心 版本库/服务器 上chectout代码后会在自己的机器上克隆一个自己的版本库.
如果你在一个不能连接网络的地方时,就像在飞机上,火车上,或者某些无网络的情况下,也一样可以提交文件,查看历史版本记录,创建项目分支,等.
GIT把内容按元数据方式存储,而SVN是按文件:
所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里.
把.git目录的体积大小跟.svn比较,会发现它们差距很大.
.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等.
配图详解:
图解:开发者从 版本库/服务器 克隆一份代码,可以随意的 新建/切换 分支,可以同时在 版本1,版本2 中去来回切换修改代码,互并不影响其他版本.
把开发者的机器也克隆成一台服务器,同样也拥有,查看历史记录,创建,合并分支等功能.
安装依赖库和版本控制
Git安装地址:
https://git-scm.com/download/win
什么是版本控制?
版本控制是指对软件开发过程中各种程序代码、说明文档等文件的变更进行管理,它将追踪文件变化,记录文件的变更时间、变更内容、甚至变更执行人进行记录,同时对每一个阶段性变更(不仅仅只是一个文件的变化)添加版本编号,方便将来进行查阅特定阶段的变更信息,甚至是回滚
人工版本控制器
通过人工的复制行为来保存项目的不同阶段的内容,添加适当的一些描述文字加以区分
* 繁琐、容易出错
* 产生大量重复(冗余)数据
版本控制工具
通过程序完成上述人工版本控制行为
* 方便且功能强大
* 只记录不同版本之间变化的部分
常见版本控制工具
* CVS
* SVN
* Git
状态
同时,git 又提供了三种(也可以说是四种)不同的记录状态
* 已修改(modified)
* 已暂存(staged)
* 已提交(committed)
有一个特殊的状态
* 未追踪(Untracked)
区域
git 提供了三个不同的工作区,用来存放不同的内容
* 工作目录
* 暂存区域
* Git 仓库
远程推的过程
1. 修改工作区中的代码
2. add commit提交到本地仓库中
3. 推送到远程仓库
3-1 链接远程仓库
3-2 推送到远程仓库的 指定分支
4. 仓库中未有新内容时(冲突),直接push即可。刷新页面检测一下
4-1 仓库中有新的内容时(冲突),先拉取到本地,协商/听安排,处理冲突后,再push
远程拉的过程
1. 创建一个空的分支
2. 通过git pull origin ['远程分支名称']:['本地分支名称']可以拿到远程的内容
3. 也可以使用克隆 git clone HTTPS的链接
总结:
简单的介绍了Git和它的基本使用,以及版本控制和状态管理和工作区域,下期讲述Git指令操作 请关注下期更新噢~~