git gui 历史版本_认识Git并了解Git的基本知识

认识Git

版本控制

版本控制是一种记录文件内容变化,方便以后查阅特定版本修改情况的系统

7d8860e71059c4e6b3c3817c5fa8aac2.png

版本控制的发展史

==1:本地版本控制系统== 主要是采用简单的数据库来记录文件历次更新的差异

a77369e42461cd53e987080c032dc817.png

在硬盘上保存文件修订前后的变化 那么,上面这种控制系统,只能在本地使用,怎么能让不同的开发者协同工作呢?==2:集中化的版本控制系统==

72a075f2afec8ccf59804dc13a2c4d39.png

上面图示,有一个单一的集中管理的服务器,保存了所有文件的修订版本;而需要协同工作的人员通过客户端连接到服务器,可以取出最新的文件或者提交更新等

6993f3000c28aa8213ff6ef4b8c055b0.png

上面的控制系统有什么优点和缺点呢?==优点== 1:可以清楚的看到项目中其他人员在做什么 2:可以掌控每一个开发者的权限 3:管理一个CVCS比在客户端上面维护本地的数据库要容易

==缺点== 1:中央服务器的单点故障,一旦服务器出现问题,那么客户端就不能再进行更新提交操作了 2:数据存储在磁盘上,磁盘发生损坏,就可能丢失所有数据 ==3:分布式版本控制系统==

b0d8aef17db15ce2e24732ced0a97ef7.png

客户端的每次克隆操作,都是对代码仓库的完整备份,不只是提取最新版本的文件快照,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像的本地仓库恢复 ==优点:== 1:可以指定和若干个不同的远端代码仓库进行交互 2:可以在同一个项目中,分别和不同小组的人进行协作 3:可以根据需要设置不同的协作流程

==Git的设计目标:== 1:速度 2:简单的设计 3:对非线性开发模式的支持:需要上万个并行开发分支 4:完全的分布式 5:能够高效管理超大规模的项目

安装Git

Git的安装比较简单,可以到官网进行下载安装包,官网地址:Git下载,或者到我这里面的地址进行下载:链接:share.weiyun.com/MUODHd1a 密码:kqr43s

5deab42940f32c4e9772b149fa35dfd2.png
493755202d6011104f6dfc957f78d2e1.png

Git的使用方式有下面两种,具体的使用方式可自行百度查阅

5eb6c0e34fd1458818ee2499d0682d6d.png

Git的核心概念

Git的使用原理

==1:直接记录快照,而不是文件的差异比较== CVS、SVN等大部分系统是用文件变更列表的方式来存储信息,将保存的信息看做是一组基本文件和每个文件随时间变化而累积的差异

956ead1ab89dcece839772aeda77e38f.png

上图是一个简单的例子:存储的是每个文件与初始的版本差异;比如File 1,有两个更新后的版本,在数据库中记录的是与Version 1的差异

Git把数据看做是对小型文件系统的一组快照:1:当文件发生变化的时候,会对全部文件制作一个快照并且保存这个快照的索引 2:当文件没有变化时,会保留一个链接指向之前存储的文件

644fb83edcd6f5ab77bdbfb546d35352.png

==2:几乎所有操作都是本地执行== 由于是做了快照,所以大部分操作都只需要访问本地文件和资源 在本地的磁盘上就有项目的完成历史,操作比较快,而且浏览项目的历史更新记录,不需要连接到服务器去获取历史 在没有网络的情况下,也可以进行提交,有网络再进行上传

==3:保证完整性== Git中所有数据在存储前都会计算检验和(校验和百度百科),然后以校验和来引用,不可能在Git不知道的情况下更改任何文件内容和目录内容,Git使用的是SHA-1散列方式计算校验和 Git 数据库中保存的信息都是以文件内容的哈希值来索引 ==4:一般只添加数据== Git操作几乎只向Git数据库中增加数据,很难执行不可逆操作 没有提交的数据有可能丢失或者弄乱修改的内容,比如常见的文件冲突 但是一旦提交快照到Git中,就很难再丢失了,如果还把数据推送到其他仓库中,那数据就更加安全了 ==5:Git的三种状态== 一:已提交(committed):数据已经安全的保存在本地数据库中了 二:已修改(modified):修改了文件,但是还没有保存到数据库 三:已暂存(staged):对一个已经修改的文件的当前版本做了标记,使它会包含在下次提交的快照中

Git的工作流程

==1:Git项目的三个工作区域== Git仓库:保存项目的元数据和对象数据库的地方,远程克隆仓库就是指这里的数据

工作目录:对项目的某一个版本从仓库中独立提取出来的内容,放在磁盘中供我们使用和修改

暂存区域:暂存区域是一个文件,保存了下一次将要提交的文件列表信息,一般是在Git的仓库中

6cc11853eddf838d2df44f0996cd867e.png

Git的基本流程

1:在工作目录中修改文件 2:暂存文件,将文件的快照放入暂存区域 3:提交更新,找到暂存区域中的文件,将快照永久的存储到Git的仓库目录

Git与SVN的区别

功能GitSVN
分布式×
数据存储方式按照元数据方式存储按照文件
分支一个指针标记另外的一个目录
全局版本号代码快照,SHA-1来唯一的标识任何一个相应时间的源代码快照
内容完整性使用SHA-1校验和,确保代码内容的完整性---
网络依赖无需联网,本地就可以操作需要联网才可以提交查看整个版本的控制信息

Git的基本使用

Git的客户端有下面这些:命令行客户端、GUI客户端、TortoiseGit、IDE插件 下面以命令行客户端为例,简单了解下Git的基本使用

初始化Git

通过git config工具,可以定制自己的Git环境,每一台计算机都只需要配置一次即可,配置有三个维度:用户、全局、系统 ==1:用户信息== git config --global user.name "mike"

git config --global user.email mike@email.com

git config --global --unset user.name

==2:文本编辑器== git config --global core.editor emacs

==3:检查配置信息== git config --list

efa216e1d6c1e1c84c177dc53361d479.png

创建一个Git仓库

==1:通过命令git init创建全新的Git仓库==

7a3aaac4bc4233f059e52e9f61c9972f.png

==2:克隆现有的仓库== Git克隆的是Git仓库服务器上的几乎所有的数据,而不仅仅是复制完成我们工作所需要的文件

Git的功能

==1:提交更新== 工作目录下的每个文件有两种状态:已跟踪和未跟踪 现在在刚刚创建的仓库下建一个txt文件:可以想到,新建的一个文件是未跟踪状态:

eec0d7b7cf3ac2ee55d8e31ee8cba926.png

==通过git status可以查看工作目录的状态==

d339908264ade477804b4391fb9d2af7.png

使用git add命令操作已跟踪,把文件放入暂存区:

9c8a7cbdf97cc40d92c65f9996f8a520.png

可以看到,文件发生了变化,有了一个图标

045e7dce7b484925944d6ae27b7cda32.png
0735c08e37f21247063328bda67b9027.png

git commit建立快照把文件放入存储区:

960c4d6753d413cf0a893fca7aebca30.png
1df02492a6ab14215a69e1be85a6bd00.png

现在文件是已经提交上去了,然后修改文件,把文件变成已修改状态:

2103fa0fab6ebf4f71bdf889d77cec62.png
e9a38600ae1150a193d87da79192a09f.png

下面图示整个过程:

83726a4269e3258413e50889b40f99b0.png

==2:查询提交历史== git log查看所有的commit记录 git show查看提交的详情

a59f6191a09b5d3c4d21cbf25586863a.png

==3:撤销更新== git checkout -- filename来撤销修改

b4c50561a796f85975c03d222b45b5f1.png

==4:打标签== git tag tagName可以新建标签 git tag命令可以列出所有的标签

0083b8d33cf949d29173a5469f373917.png

这里只列出了一些简单的操作和使用,还有其他的一些使用,可以到Git官网或者百度查询了解,官网地址:Git官网


作者:狐言不胡言
链接:https://juejin.im/post/6861560917357527053


版权声明:本文为weixin_39550486原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。