IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 【Git版本控制】——保姆级教程 -> 正文阅读

[开发工具]【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会进入人工编辑状态,有用户自行决定!
在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 12:07:31  更:2022-01-28 12:08:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:34:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码