【Git版本控制】——保姆级教程


一、版本控制

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

1、版本控制的功能:

(1)追踪文件的变更

它将什么时候、什么人更改了文件的什么内容等信息忠实地了记录下来。

每一次文件的改变,文件的版本号都将增加。

在这里插入图片描述

(2)并行开发

软件开发往往是多人协同作业,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。

并行开发中最常见的不同版本软件的错误(Bug)修正问题也可以通过版本控制中分支与合并的方法有效地解决。

在这里插入图片描述

2、版本控制的发展历程

(1)本地版本控制系统

本地版本控制系统有很多,大多都是采用某种简单的数据库来记录文件的历次更新差异。其中最流行的一种叫做 RCS ,现今许多计算机系统上都还看得到它的踪影。

RCS 的工作原理:在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。
在这里插入图片描述

(2)集中化的版本控制系统

集中化的版本控制系统解决了本地版本控制系统中不同系统上的开发者无法协同工作的缺点。

集中化的版本控制系统中有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

多年以来,这已成为版本控制系统的标准做法。
在这里插入图片描述
各个开发者都是通过同一个集中管理的服务器进行工作,所以在一定程度上每个开发者都可以看到其他人的工作内容,另外,作为项目的管理者也可以轻松掌控每个开发者的权限,这比在各个客户端上维护本地数据库来得轻松容易。

当然因为是单点集中管理,存在较大的缺点:

  1. 中心服务器宕机后,所开发者都无法工作
  2. 中心数据库丢失,所有文件都丢失,每个开发者本地保存的只是部分数据的快照,并不完整。

(3)分布式版本控制系统(Git)

采用分布式版本控制系统的客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录。(过程中对文件的所有操作都是会被完整记录下来的)

这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。

因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
在这里插入图片描述
分布式版本控制系统和集中化的版本控制系统的最大区别在于:集中化版本控制系统的部分机器保存的只是部分数据的快照,而分布式版本控制系统保存的是整个代码仓库的镜像。

二、Git

1、Git的结构

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、命令行的操作

(1)本地库初始化

 1. cd +路径	# 打开某文件
 2. cd ..	 	# 返回上一级目录
 3. git init	# 本地库初始化
 4. ll			#详细罗列当前目录下的文件
 5. ls -al		#带隐藏文件一并显示
  1. 选定想作为工作区的文件夹
  2. 使用 cd 命令进入该文件夹目录下
  3. git init 初始化(若在该文件夹里出现 .git 文件,则说明初始化成功)

.git 是隐藏目录需要采用 ls -al 命令:
在这里插入图片描述
.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改

在这里插入图片描述

(2)设置签名

所谓的签名就是设置一个用户名称和一个用户email,此处的签名只看作是一个特定的字符串(email也不需要真实有效),只用来区分不同的开发人员,并不作他用。

这里的签名就是一个标志!

辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。

  1. 项目级别/仓库级别:仅在当前本地库范围内有效
git config user.name + 名字
git config user.email + 邮箱

在这里插入图片描述

签名信息保存在 .git 目录下的 config 文件中

在这里插入图片描述

2.系统用户级别:登录当前操作系统的用户范围

git config --global user.name 0
git config --global user.email 0@0

在这里插入图片描述
信息保存位置:~/.gitconfig (根目录下的 .gitconfig文件中)
在这里插入图片描述

对于种签名的优先级如下:
在这里插入图片描述

(3)状态查看(提交前后)

查看状态:包括当前所在分支,是否有待添加到缓冲区的内容,是否有待提交到本地库的内容

git status 	#状态查看
vim + 文件名	# 采用vim编译器编辑文件

在这里插入图片描述

git add + 文件名	#将文件添加到缓存区
git commit [-m "注释" +文件名]	#将文件提交到本地库

在这里插入图片描述
在这里插入图片描述

(4)查看历史版本记录

git log		# 信息最完整

git log --pretty=oneline	#以一行形式展示

git log --oneline	#精简一行

git reflog

(5)版本的前进/后退

在这里插入图片描述

在这里插入图片描述

(6)比较文件间差异

在这里插入图片描述

3、分支操作

git branch + 分支名		# 创建分支
git branch -v			#查看当前所有分支
git checkout + 分支名	#切换到某个分支上
git merge + 有新内容的分支 	#别的分支合并到当前分支

解决分支冲突

当两个分支都修改了同一个地方,而且修改为的内容各不相同,此时执行合并命令的时候就会发生冲突,git本身无法决定应该以哪个分支的修改为准,此时,git会进入人工编辑状态,有用户自行决定!
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱上bug的小姐姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值