Q: git是什么呢?
A: Git是目前世界上最先进的分布式版本控制系统
因此在学习git之前必须要了解的一个概念-------版本控制
文章目录
一、理解版本控制系统
什么是版本控制
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
版本控制的具体功能
版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了记录下来。每一次文件的改变,文件的版本号都将增加。除了记录版本变更外,版本控制的另一个重要功能是并行开发。软件开发往往是多人协同作业,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。并行开发中最常见的不同版本软件的错误(Bug)修正问题也可以通过版本控制中分支与合并的方法有效地解决
没有版本控制可能出现的问题
没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题
主流的版本控制系统
- Git
- 开源的分布式版本控制系统
- 大牛
Linus
为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件 - 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等
- SVN
- SVN是subversion的缩写,是一个开放源代码的版本控制系统
- 设计目标就是取代CVS
- CVS
Git与SVN的区别
- 1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
- 2、Git 把内容按元数据方式存储,而 SVN 是按文件:**所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
- 3、Git 分支和 SVN 的分支不同:**分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
- 4、Git 没有一个全局的版本号,而 SVN 有:**目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
- 5、Git 的内容完整性要优于 SVN:**Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
版本控制系统的工作模式
版本控制系统的工作模式主要有两种,集中式工作模式和分布式工作模式
(一)集中式工作模式
为了让不同系统上的开发者能够协同工作,集中化的版本控制系统应运而生。集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
- 存在的问题:
- 一旦服务器出现问题,所有的客户机将无法更新到最新版本,并且无法恢复到指定的版本。因为所有版本信息都在中央版本库中。
- 必须具有网络环境,单机无法实现版本控制。
- 客户机之间无法直接进行联系,无论中央版本服务器是否出现问题。CVS,SVN 都是集中式版本控制系统。
(二)分布式工作模式
分布式版本控制系统中无需中面版本库服务器,每台客户机都具有独立的版本控制功能,多台客户机之间相连就可以实现文件共享及版本管理。
-
分布式工作模式的好处
无需网络环境也可以进行版本控制,在网络环境下可以实现协同工作
分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的
Git的工作模式
包含:集中式工作模式,开源社区工作模式
-
集中式工作模式
Git为了便于客户机之间的协同工作,Git版本控制系统一般会设置一个中央版本库
服务器,目的是让所有客户机都从该主机更新版本,提交最新版本。该工作模式下的客
户机地位都平等 -
开源社区工作模式
- 对于开源软件开源社区的协作开发模式,不可能让所有人都具有修改中央版本库的权限,让不同的客户机对中央版本库的不同操作权限,将有利于维护开源软件的安全性
- 你可以下载某一个仓库到你的本地仓库,但是你如果向原作者提交修改代码,需要原作者同意并且修改整合后才能提交成功
二、Windows环境下安装配置Git
安装
官网:https://git-scm.com/
如果下载比较慢的话可以用镜像下载:https://npm.taobao.org/mirrors/git-for-windows/
-
下载后为可执行文件,直接双击安装
-
点击下一步完成安装,注意安装目录即可
安装成功后在开始菜单中会有Git项,菜单下有3个程序∶任意文件夹下右键也可以看到对应的程序!
- Git Bash : Unix与Linux风格的命令行,使用最多,推荐最多
- Git CMD : Windows风格的命令行
- Git GUI: 图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
环境变量的说明
在安装Git时,它会自动在系统环境变量里配置环境变量,我们鼠标右键就可以在任意一个文件夹下使用git,不需要手动配置了
卸载
-
清理系统环境变量
-
在Windows设置中找到册程序卸载直接卸载Git即可
两步之后即可将git卸载干净
如何验证Git安装成功
进入Git bash
或者命令行
#输入以下命令
git --version
若出现对应版本号,说明git安装成功
更新
自从Git 2.16.1(2)你可以在命令行中使用以下命令来更新Git
git update-git-for-windows
三、初探Git底层结构
Git工作区域
Git本地有三个工作区域:文件在这四个区域之间的转换关系如下
- Workspace :工作区,就是你平时存放项目代码的地方
- Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
- Repository :仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
- Remote :远程仓库,托管代码的服务器
注:暂存区是Git非常重要的概念,弄明白了暂存区,就弄明白了Git的很多操作到底干了什么
Git管理的文件的三种状态
git管理的文件有三种状态︰已修改(modified),已暂存(staged),已提交(committed)
- 运行
git status
看看当前仓库的状态
- 如果
git status
告诉你有文件被修改过,用git diff
可以查看修改内容。
我们把文件往Git版本库里添加的时候,是分两步执行的
第一步是用git add
把文件添加进去