Git
版本控制
版本控制是一种记录若干文件内容变动,以便未来查阅特定版本订正状况的零碎. 简略讲就是备份和记录. 接下来咱们要理解三种不同版本控制的倒退历程.。
本地版本控制系统
人们把我的项目拷贝到本地磁盘上进行备份, 而后以命名形式来辨别. 这种做法益处是简略, 但害处也不少比方备份比拟多或者就会混同不同版本之间的区别. 那为了解决这个问题, 有人就开发了一个本地版本的管理系统, 它的结构图如下:
本地版本治理就是把版本号存入数据库来记录文件的历次更新差别。
集中化版本控制系统
本地版本控制系统可能将不同版本的文档保留下来并且借助版本记录能够很不便定位相干文件但又引入了新的问题,如何让在不同零碎上的开发者协同工作?于是,集中化的版本控制系统( Centralized Version Control Systems,简称 CVCS )应运而生。这类零碎,诸如 CVS,Subversion 以及 Perforce 等,都有一个繁多的集中管理的服务器,保留所有文件的订正版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的规范做法 。
这样做的益处是解决了人们开发协同的问题, 然而把所有的代码提交到同一台服务器上有一个很显著的问题就是单点故障, 如果这台服务器宕机了, 那所有人都不能提交代码, 还有如果这台服务器如果磁盘产生故障,碰巧没做备份,或者备份不够及时,就还是会有失落数据的危险。最坏的状况是彻底失落整个我的项目的所有历史更改记录,而被客户端提取进去的某些快照数据除外,但这样的话仍然是个问题,你不能保障所有的数据都曾经有人当时残缺提取进去过。本地版本控制系统也存在相似问题,只有整个我的项目的历史记录被保留在繁多地位,就有失落所有历史更新记录的危险。
分布式版本控制系统
为了解决集中化版本管理所带来的问题分布式版本治理控制系统(Distributed Version Control System,简称 DVCS)就应运而生了. 在这类零碎中,像 Git,Mercurial,Bazaar 以及 Darcs 等, 客户端不只是提取出最新版的文件快照, 而是把最原始的代码仓库镜像到本地. 这样一来,任何一处协同工作用的服务器产生故障,预先都能够用任何一个镜像进去的本地仓库复原。因为每一次的提取操作,实际上都是一次对代码仓库的残缺备份。
所以综上来看的集中化版本控制系统是对本地版本控制系统的一次降级, 因为它退出了协同操作, 分布式版本控制系统是对集中化控制系统的一次补充, 使之更加欠缺。
Windows上装置Git
最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix零碎上跑。不过,缓缓地有人把它移植到了Windows上。当初,Git能够在Linux、Unix、Mac和Windows这几大平台上失常运行了。
在Windows上应用Git,先从Git官网间接下载安装程序,抉择指定零碎下载,而后按默认选项装置即可。装置实现后,在开始菜单里找到“Git”->“Git Bash”,显示出相似命令行的窗口,阐明Git装置胜利!
在窗口内输出 git --version 查看git 版本信息如下:
[外链图片转存失败,源站可能有防盗链机制,倡议将图片保留下来间接上传(img-ZgAlpggy-1609138085266)(Git教程.images\1557460306743.png)]
在应用用Git工作之前,咱们须要做个一次性的配置。不便后续Git能跟踪到谁做了批改,咱们须要设置对应的用户名与邮箱地址。
git config --global user.name "your_username"git config --global user.email your_email@domain.comgit config --list 查看所有配置
留神git config
命令的--global
参数,用了这个参数,示意你这台机器上所有的Git仓库都会应用这个配置,当然也能够对某个仓库指定不同的用户名和Email地址。
[外链图片转存失败,源站可能有防盗链机制,倡议将图片保留下来间接上传(img-DQZwMTFB-1609138085267)(Git教程.images\1557460929191.png)]
了解Git文件的三种状态与工作模式
应用Git 操作文件时,文件的状态有以下三种:
状态 | 形容 |
---|---|
已提交(committed) | 已提交示意数据曾经平安的保留在本地数据库中。 |
已批改(modified) | 已批改示意批改了文件,但还没保留到数据库中。 |
已暂存(staged) | 已暂存示意对一个已批改文件的以后版本做了标记,使之蕴含在下次提交的快照中。 |
针对Git 文件的三种状态,这里须要理解Git我的项目的三个工作区域:工作区、暂存区和Git仓库。
分类 | 形容 |
---|---|
工作区 | 简略的了解为在电脑里能看到的目录,比方本人创立的本地我的项目目录 |
暂存区 | Git的版本库里存了很多货色,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git主动创立的第一个分支master,以及指向master的一个指针叫HEAD。 |
Git仓库 | 工作区有一个暗藏目录.git,这个不算工作区,而是Git的版本库。 |
根本的Git 工作流程形容如下:
- 在工作区中批改某些文件。
- 对批改后的文件进行快照,而后增加到暂存区。
- 提交更新,将保留在暂存区域的文件快照永恒转储到 Git 仓库中。
创立版本库并提交文件
版本库又名仓库,能够简略了解成一个目录,这个目录外面的所有文件都能够被Git治理起来,每个文件的批改、删除,Git都能跟踪,以便任何时刻都能够追踪历史,或者在未来某个时刻能够“还原”。了解了Git 文件状态与三种工作区域之后,通过一个例子来体验Git对于文件的基本操作。
编写一个文本文件并将文件提交到git仓库
- 初始化git 本地仓库
通过执行
git init
命令在本地初始化一个本地仓库,执行该命令后会在本地初始化一个没有任何文件的空仓库。
- 新建文本文件 git01.txt 并增加到暂存区
文本内容如下:
[外链图片转存失败,源站可能有防盗链机制,倡议将图片保留下来间接上传(img-ZVDtMwef-1609138085272)(Git教程.images\1557718421862.png)]
[外链图片转存失败,源站可能有防盗链机制,倡议将图片保留下来间接上传(img-RXe7wK3F-1609138085274)(Git教程.images\1557716676204.png)]
在 .git 同级目录下增加git01.txt 文件后,应用 git status
查看工作目录与暂存区文件状态
git status 命令用于显示工作目录和暂存区的状态。应用此命令能看到那些批改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。
执行git add
命令增加文件到暂存区
git add path 通常是通过git add <path>的模式把<path>增加到索引库中,<path>能够是文件也能够是目录。git不仅能判断出<path>中,批改(不包含已删除)的文件,还能判断出新添的文件,并把它们的信息增加到索引库中。
此时能够看到有一个git 已tracked 到新文件git01.txt,文件被胜利寄存到暂存区
- 提交文件到本地版本库
文件被增加到暂存区后,执行git commit 命令提交暂存区文件到本地版本库中。
git commit 命令用于将更改记录(提交)到存储库。将索引的以后内容与形容更改的用户和日志音讯一起存储在新的提交中。通常在执行提交时 在 git commit 命令后跟上 -m 属性 退出本次提交的记录阐明 不便后续查看提交或改变记录。
git log
:命令用于显示提交日志信息。 (比拟罕用,后续讲到时光穿梭时会常常应用该命令)。
时光穿梭机
企业中在多人的我的项目开发环境下,应用Git 版本控制工具对我的项目版本进行治理时,通常会对我的项目不同版本的文件进行查看,我的项目历史版本,将来版本的切换操作,对于一个我的项目开发人员,此时对于Git 的这些根本命令操作就成为了一项基本技能。