浅析Git的产生,发展和配置规则

本文深入浅出地介绍了Git的起源、发展历程和核心原理,详细阐述了Git的工作流程,包括本地与远程仓库的交互。通过实例解析了Git的提交操作,如`git add`、`git commit`和`git push`。同时,对比了Git与SVN的区别,强调了Git的分布式特性带来的优势。此外,还探讨了`.gitignore`文件的使用,帮助开发者更好地管理版本控制。

版本控制

版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一 (百度百科

就是说,在完成一件事的时候,往往很难一次就做到最好,需要不停的修改迭代,直到最终达到预期的效果。

在这里插入图片描述
通常可以对这些文件进行标号,然后放在指定的区域中,在对当前版本进行修改的时候,需要进行备份,防止我们在修改之后,发现效果还不如没有修改之前的版本,这时候万一在之前的版本上进行修改,但是又没有进行备份,就只能哭晕在厕所了。。

实际中,版本控制的主要作用有以下几个:

  1. 多人协同开发
  2. 并行开发,提高开发效率
  3. 跟踪记录软件开发的整个过程
  4. 追踪和记载一个或者多个文件的历史记录
  5. 统计工作量

常见的版本控制器:

  1. Git
  2. SVN
  3. CVS

版本控制的分类

  1. 本地版本控制

在本地记录每次的更新,对每个版本做一个快照,只适合在自己的主机中使用
在这里插入图片描述

  1. 集中版本控制

就是说,所有的版本信息都保存在指定的服务器中,在开发的时候,只需要从服务器中同步更新,或者上传自己的修改
在这里插入图片描述
在集中版本控制时,我们都访问同一个远程仓库,开发的时候先拉取最新的版本,修改之后再进行提交。

这个时候,如果多个人同时对一个区域进行修改,当第二个人提交的时候,就会出现版本不一致的情况,这个时候就需要自己重新更新一下自己的版本,然后再提交

这样做的话,有一个很大的问题,就是如果服务器突然坏了,那么服务器中的代码就可能会丢失,后果还是比较严重的。

还有就是,在没有网络的情况下,我们的开发只能停留在当前版本,而无法从服务器中获取其他版本的信息进行开发

  1. 分布式版本控制

就是说在我们的本地中,也可以存有所有版本信息,就可以在本地查看所有的历史版本。

可以离线在本地进行修改,然后同步到本地的仓库,只需要在提交的时候,因为需要Push到远端的仓库,所以需要连接一下网络
在这里插入图片描述
所以说,在分布式版本管理中,由于每个用户本地中都保存有历史的版本信息,那么只有有一个用户的设备没有问题,就可以恢复所有的版本数据,就是比较占用本地的存储空间

不会出现因为服务器损坏,或者网络的原因,而不能工作的问题

Git与SVN的区别

SVN是集中时版本控制系统,所有的版本信息存放在中央服务器。工作时需要从中央服务器总得到最新的版本,完成工作后再进行推送,整个过程必须联网

Git是分布式版本管理系统,没有中央服务器,每个人的电脑就是一个完整的版本库,可以离线工作,只需要完成时再推送修改。

Git 的历史

首先,Git是目前世界上最先进的一个分布式版本控制系统

他的诞生也是非常传奇,他的创始人-“Linus Torvalds”,也是Linux的创始人。一开始的时候,他通过手工的方式,维护Linux中的代码,最后由于代码库越来越庞大,就选择了一个商业的版本控制系统BitKeeper

一开始是免费使用,但是在2005年的时候,由于一些特殊的原因,BitKeeper开发商决定不再免费给Linux社区使用,然后Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!(牛

然后在一个月内,应用在了Linux内核中
在这里插入图片描述

Git 的原理

Git本地中有四个工作区域

  1. 工作目录(Working Directory),平时存放代码的地方

  2. 暂存区(Stage/Index),临时存放确定改动的代码,本质上是一个文件,保存即将提交的文件列表信息

  3. 本地仓库(Repository或者Git Directory),安全存放数据的位置,有自己提交到所以版本的数据。HEAD指向最新放入仓库的版本
    在这里插入图片描述
    其中存储的就是当前使用的版本分支
    在这里插入图片描述

  4. 远程仓库(Remote Directory),一个代码托管的服务器

在这里插入图片描述

Git提交的三板斧

Git的提交步骤一般是这样的:

  1. 添加工作目录中修改的文件到暂存区中
git add [filepath]
  1. 将暂存区中的文件,同步到本地仓库中
 git commit -m "[对本次提交的说明]"
  1. 推送本地仓库代码到远端分支
git push

在这里插入图片描述

所有说,Git的文件就有以下四种状态:

  1. Untracked,未跟踪。就是在文件夹中,但是没有加到git 库,不参与版本控制,可以使用git add 使他变为Staged状态
  2. Staged,暂存状态。在暂存区中的文件,可以通过git commit将修改同步到本地仓库。
    此时,库中文件和本地文件一致,状态为Unmodify
  3. Unmodify,文件已入库,未修改。就是暂存区中代码的版本和文件夹中的代码完全一致,没有修改
  4. Modified,文件已入库,发生了修改。就是说暂存区中的代码和文件中的代码不同。
    可以使用git checkout从库中取出文件,覆盖当前修改,变成Unmodify状态;或者使用git rm [filepath]移出版本库,变成Untracked状态

查看指定文件的状态

git status [filepath]

查看所有文件状态

git status

在这里插入图片描述
红色即为没有被跟踪的文件 (字符集的原因导致中文文件名没有显示

忽略文件

就是,如果我们的本地文件中有一些文件不是必须要被提交的,那么每次提交的时候,我们可以手动选择这些想被提交的文件,再提交。

而Git中有一种更为方便的方式,便是在主目录下建立.gitignore文件,他里面的文件都是不需要提交的文件,其配置规则如下:

  1. 使用#进行注释,并忽略文件中的空行
  2. 可以使用通配符,*表示任意多个,表示一个字符,[abc]表示可选字符的范围,{string1,string2}表示可选的字符串等
*.txt  # 所有.txt文件不被提交
  1. 名称前有一个!,表示不被忽略
!conf.txt  # conf.txt文件除外
  1. 名称前面是一个路径分隔符/,表示要忽略的文件在根目录下
/temp	# 忽略根目录下的temp文件
  1. 名称后面是一个路径分隔符/,表示忽略该目录下的所有文件
temp/	# 忽略当前目录下的temp文件
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值