00-Git 应用

Git 应用

一、Git概述

1.1 什么是Git

git 是一个代码协同管理工具,也称之为代码版本控制工具,代码版本控制或管理的工具用的最多的: svn、 git。

  • SVN 是采用的 同步机制,即本地的代码版本和服务器的版本保持一致(提交版本时,直接提交到服务器);

  • Git 是采用 异步机制(分为本地仓库和远程仓库),本地提交的版本不会影响服务器的版本,只有本地的代码上传到服务器时才会同步。

git 是一个开源分布式版本控制系统,可用于高效的管理不同大小的项目, 05 年创造的,由林纳斯(Linux 之父)发明的。

1.2 git多人协同开发

代码版本管理工具主要的功能是 多人协同开发,其 作用 是:

  • 防止代码丢失,可以做备份;
  • 代码版本的管理,可以进行多个版本之间的跳跃;
  • 可以方便的将代码在多人之间进行共享传输;
  • 多人开发时,有各种模式(分支、标签)可以方便代码管理。

1.3 git 的特点

  • git 可以管理各种文件,特别是代码项目,多在 linux 和 unix 系统中使用
  • 是分布式管理,不同于集中式,这是 git 和 svn 的核心区别
  • git 可以很好的支持分支,方便多人协作工作 git 分布式代码分家安全,有全球唯一的 commit 版本号
  • git 是开源的系统
  • 使用 git 可以脱网工作(本地仓库),且数据传输速度较快

二、Git的安装与应用

2.1 Windows下Git的安装

下载地址:https://git-scm.com/downloads

一路next

2.2 Linux下安装

在Ubuntu系统下,基于apt安装

命令:

sudo apt-get install git -y

2.3 Git配置

三种配置级别

  • (1) 系统中所有的用户 都可以使用该配置,配置文件是: /etc/gitconfig

    git config --system  配置信息
    
  • (2) 当前用户可使用该配置:配置文件是: ~/.gitconfig

    git config --global 配置信息
    
  • (3) 当前项目可使用该配置,配置文件是:当前项目下的 ./.git/config

    git config
    
2.3.1 配置全局的用户名

给定git用户的名称(自定义)

git config --global user.name "zhb-git"
2.3.2 配置全局的用户邮箱

同配置用户名相同,自定义git用户的邮箱

git config --global user.email "1174333100@qq.com"

在这里插入图片描述

2.3.3 查看配置信息

配置信息后,可以查看配置信息,确认是都OK。

git config --list
#或
git config -l

在这里插入图片描述

2.4 Git常用指令

2.4.1 初始化本地仓库

在某个目录下,将当前目录作为本地仓库使用时。需要将此目录进行初始化:

git init

初始化命令执行成功后,会在当前目录下创建 .git 子目录。

在这里插入图片描述

2.4.2 添加文件到暂存区

将当前目录下的文件添加到暂存区中,

  • 如果文件没有添加到暂存区时,显示的状态是红色的,
  • 添加到暂存区之后,显示状态的颜色应该是绿色的。

查看文件的状态:

git status

在这里插入图片描述

添加文件到暂存区:

git add <文件或> ... | . | *
  • . 表示当前工作目录
  • <文件> 表示具体的某一个文件全名(带后缀名)
  • * 表示任意多个任意字符的文件,代表所有的文件及目录(目录中国的子文件及子目录)

注意:添加到暂存区的文件没有存放在本地仓库中

在这里插入图片描述

可以将暂存区的文件删除:

git rm --cache <文件名>  #删除暂存区的指定文件#或
git rm --cache -r .  #递归删除所有文件(将暂存区的所有文件恢复到工作区)

注意:git rm --cache -r . 命令可能会将仓库中的文件删除,如果出现这种情况,可以使用下面命令恢复:

git restore --staged <file>...

git restore --staged <file>... 命令可以将暂存区文件还原

2.4.3 提交版本

将暂存区的文件,提交到本地仓库中,产生一个新的提交版本号(世界上唯一的)

git commit -m <提交说明>  #将文件同步到本地仓库并且设置提示说明

注意:

  • 一般提示时需要附加一些同步信息,在-m 后添加
  • 所有对工作区的修改,如果想同步到仓库,都需要执行当前命令(add --> commit)

在这里插入图片描述

2.4.4 查看提交的版本信息

提交的版本 可以通过命令查看:

git log

在这里插入图片描述

可以限制显示版本号的数量:

git log -n 版本数量(具体的值: 1,2,3 等)

在这里插入图片描述

如果只想显示版本号和消息,可以单行显示:

git log --pretty=oneline

在这里插入图片描述

2.4.5 比较本地与仓库中的文件

在将文件提交到本地仓库之后,再次修改文件时,可以比较本地文件与仓库中的文件内容

比较:

git diff <file>

在这里插入图片描述

2.4.6 恢复操作
(1)、从本地仓库中恢复文件
git checkout <文件名>

aaa.txt 中的内容恢复到未修改之前的:

在这里插入图片描述

(2)、丢弃本地文件修改的内容
git checkout -- <文件名>  #丢弃本地指定文件中的已经修改的内容( --两边都有空格)效果同上

在这里插入图片描述

(3)、本地仓库文件的移动和删除

无论移动还是删除,都会影响本地文件,修改后,必须再次提交版本 (再次执行 git commit)

git mv <源文件> <目的目录> #在本地仓库中将源文件移动目的目录中(本地也会移动)

在这里插入图片描述

删除:

git rm <文件名>    # 在本地仓库中删除指定的文件(本地也会删除)
(4)、回到上一个版本
git reset --hard HEAD^   # HEAD 后面的^数量决定了回到上几个版本

在这里插入图片描述

(5)、回到指定的版本
git reset --hard <commit_id>   #只需要 commit id 的唯一的前几位(至少4位)即可

在这里插入图片描述

(6)、查看所有的历史版本
git reflog 	#最新的操作始终在最上边  

在这里插入图片描述

2.4.7 标签管理 (版本管理)

标签是在当前工作的位置添加的快照,用于保存工作状态,一般用于版本的迭代。

(1)、创建标签

在当前提交的版本上创建标签,如:

git tag 标签名 [-m "标签的消息"]

在这里插入图片描述

如果为指定提交版本号创建标签也可以的,如:

git tag <标签名称> <commit id>  #指定某一个 commit id 处创建标签

在这里插入图片描述

(2)、查看标签
git tag
#或
git show <标签名称>

注意:如果出现了 : ,则需要按 q 退出。也可以在show命令上加参数 -q 。

在这里插入图片描述

(3)、删除标签

可以将标签(从版本号上)删除

git tag -d <标签名称>

在这里插入图片描述

(4)、恢复到指定标签

标签和版本号绑定的,在恢复代码版本时,可以使用标签

git reset --hard <标签名称>

在这里插入图片描述

在这里插入图片描述

2.4.8 临时工作区管理

临时工作区可以理解为某个区间,如:暂存区、当前工作区等。

(1)、创建临时工作区

目的:保存未提交文件的状态

  • 红色【新文件、修改文件】未添加到暂存区的文件
  • 绿色【已添加到暂存区的文件】
git stash 

在这里插入图片描述

(2)、查看临时工作区
git stash list

在这里插入图片描述

注意:最近创建的临时工作区在列表的最上面,即 0号位置为最新创建的临时工作区。

在这里插入图片描述

(3)、使用指定工作区
git stash apply stash@{编号}

在这里插入图片描述

注意:在使用临时工作区时,当前工作区不能存在未提交的文件(暂存区必须是空的)

在这里插入图片描述

(4)、使用最新的临时工作区并删除(弹出)
git stash pop

在这里插入图片描述

(5)、删除指定的临时工作区
git stash drop stash@{编号}

在这里插入图片描述

(6)、删除所有的临时工作区
git stash clear  
2.4.9 分支操作

分支主要用于多人协作工作,分支即获取原有代码,在此基础上创建自己的工作环境,单独开发,不会影响其他分支的操作,开发完成后再统一合并到主线分支中

创建分支的好处:安全,不影响其他人工作

(1)、分支的分类

按工程的项目进行代码分支的管理:以项目为准,存在master、develop

project(项目库)master(主线分支)hotfix(线上紧急 bug 修复分支)develop(开发分支)feature(功能分支)release(发布分支)bugfix(bug 修复分支)  

在这里插入图片描述

(2)、查看当前分支
git branch
(3)、创建分支
I. 只创建分支
git branch <分支名称>

在这里插入图片描述

II. 创建并切换分支
git checkout -b <分支名称>

在这里插入图片描述

(4)、切换分支
git checkout <分支名称>

在这里插入图片描述

(5)、合并分支到当前分支

如果在当前分支下创建的新的分支存在新的提交的版本,则需要切换到当前分支下,可以将心的分支合并到当前分支。即父分支可以合并子分支。

如:

git merge <后代分支名称>
  • 合并过程中如果没有冲突,直接合并后当前分支即为干净的状态,直接保存在本地仓库中
  • 如果产生冲突,需要人为的选择,然后在进行 add 和 commit 的操作
  • 在创建分支前,尽量保证当前分支是干净的,以减少冲突的发生

在这里插入图片描述

在这里插入图片描述

feature2 是develop分支的子分支, 子分支已提交了两个版本。

如果将feature2分支合并到develop分支上,则 需要先切换再合并。

在这里插入图片描述

(6)、删除分支
git branch -d < 分支名称>

在这里插入图片描述

(7)、衍合分支
git rebase <分支名>

效果同合并分支,但是不会创建新的版本号,只会更新父分支上最近提交的版本号(是在子分支创建之后提交的)

在这里插入图片描述

三、远程仓库

3.1 Gitee的远程仓库

远程仓库:中心服务器上的git仓库

  • gitee:目前使用较多的是gitee(国内免费)
  • github:国外免费,网速比较慢
  • gitlab:私有仓库,企业内部搭建

gitee的网址:https://gitee.com/

需要注册账号,并登录。

3.2 配置gitee的ssh秘钥

  • gitee 支持http和ssh两个协议,http协议每次使用时,都需要手动输入用户名和口令,比较麻烦。

  • 可以使用ssh协议,ssh协议支持公钥与私钥实现免密。

  • 在gitbash的窗口中,生成公钥与私钥

  • 命令如下

ssh-keygen

在这里插入图片描述

产看公钥:

cat ~/.ssh/id_rsa.pub

将此公钥粘贴在 gitee网页 —> 头像 下来菜单 选择 账号设置 菜单,在 设置页面,从 左边菜单 找到 SSH公钥 ,点击之后,打开公钥设置界面,填写公钥名称和内容:

在这里插入图片描述

确认信息之后,点击【确定】

3.3 创建仓库

点击用户头像左边的 + 图标,在弹出的子菜单中选择 新建仓库 ,在打开页面,输入仓库的名称及介绍即可点击【创建】按钮。

在这里插入图片描述

在这里插入图片描述

3.4 本地仓库上传

3.4.1 首次上传
  • 先将远程仓库的位置(ssh仓库位置)添加到本地仓库的配置中,

  • 然后再上传,上 传时必须带 -u <远程仓库的名称> <分支名称>

git remote add origin git@gitee.com:disenQF/testgit2302.git
git push -u origin "master"

origin 是远程仓库的名称,可以自定义;

master 是远程仓库的分支名(默认的主分支名)。

3.4.2 再次上传
git push
3.4.3 强制上传

远程仓库的代码完全由本地仓库的代码替换

git push -u --force origin master

3.5 远程仓库下载

3.5.1 首次下载

通过 克隆 的方式下载的远程仓库

git clone git@gitee.com:用户名/仓库名
3.5.2 再次下载(更新)
git pull

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/580017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KEPServerEX 6 之【外篇-1】PTC-ThingWorx服务端软件安装 Tomcat10本地安装

本文目标: 安装 Java 和 Apache Tomcat ,为ThingWorx安装做基础。 ----------------------------------------------------------------------- 安装重点 --------------------------------------------------------------------- 1. 安装 Java 11 / JDK 11 添加系…

SSRF中Redis的利用

目录 1. SSRF 1.1 什么是SSRF 1.2 漏洞成因 1.3 可能会存在SSRF的地方 1.4 SSRF分类 1.5 验证方法 1.6 利用方式 1.7 可以利用的协议 1.8 SSRF过滤绕过 2. SSRF攻击Redis 2.1 环境搭建 2.2 漏洞复现(通过ssrf利用redis写入webshell) 2.2.1 想要写入webshell的两个…

【unity学习笔记】4.场景切换

创建空物体→创建脚本挂载在空物体上→打开脚本 1.创建所需要的场景 assets中点击创建场景 2.文件→生成设置 3.将需要的场景拖入 4.场景跳转 创建空对象&#xff0c;将脚本放在空对象上。 注意两个类&#xff1a;场景类、场景管理类 void Start(){//场景跳转SceneManager.Lo…

labelme目标检测数据类型转换

1. labelme数据类型 LabelMe是一个开源的在线图像标注工具&#xff0c;旨在帮助用户创建和标记图像数据集。它提供了一个用户友好的界面&#xff0c;让用户可以直观地在图像上绘制标记框、多边形、线条等&#xff0c;以标识和注释图像中的对象或区域。 GitHub&#xff1a;http…

智能监控平台/视频共享融合系统EasyCVR海康设备国标GB28181接入流程

TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力&…

C# 使用Pipelines处理Socket数据包

写在前面 在上一篇中对Pipelines进行简单的了解&#xff0c;同时也留下了未解的问题&#xff0c;如何将Pipelines类库运用到Socket通讯过程中来解决粘包和分包。链接地址如下&#xff1a; 初识System.IO.Pipelines https://rjcql.blog.csdn.net/article/details/135211047 这…

Hive安装笔记——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

将下发的ds_db01.sql数据库文件放置mysql中 12、编写Scala代码&#xff0c;使用Spark将MySQL的ds_db01库中表user_info的全量数据抽取到Hive的ods库中表user_info。字段名称、类型不变&#xff0c;同时添加静态分区&#xff0c;分区字段为etl_date&#xff0c;类型为String&am…

前端开发之通过vue-office组件实现文件预览

前端开发之通过vue-office组件实现文件预览 前言效果图docx文件xlsx文件pdf文件 vue中简单案例1、安装组件2、vue中代码 前言 在实现文件预览的时候我们可以通过vue-office组件来实现文件的预览效果 效果图 docx文件 xlsx文件 pdf文件 vue中简单案例 1、安装组件 整体安装…

RabbitMQ入门指南(九):消费者可靠性

专栏导航 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、消费者确认机制 二、失败重试机制 三、失败处理策略 四、业务幂等性 1.通过唯一标识符保证操作的幂等性 2.通过业务判断保证操作的幂等性 总结 前言 RabbitMQ是一个高效、可靠的开源消息队列系…

词表示:语言与计算的桥梁

目录 前言1 什么是词表示2 独热表示3 上下文表示4 分布式表示结语 前言 在自然语言处理领域&#xff0c;词语的表示是一个基本挑战。将词语转换为计算机可以理解的符号&#xff0c;衡量词语之间的相似度&#xff0c;捕捉它们之间复杂的关系&#xff0c;是使机器能够理解和处理…

Bluetooth Mesh 入门学习干货,参考Nordic资料(更新中)

蓝牙网状网络&#xff08;Bluetooth mesh&#xff09;概念 概述 蓝牙Mesh Profile | Bluetooth Technology Website规范&#xff08;Mesh v1.1 后改名Mesh ProtocolMesh Protocol | Bluetooth Technology WebsiteMesh Protocol&#xff09;是由蓝牙技术联盟(Bluetooth SIG)开…

EasyExcel实现动态表头(注解实现)

要实现上述动态头&#xff0c;按每日统计&#xff0c;每月统计&#xff0c;每年统计。而时间是一直变化&#xff0c;所以我们需要表头也一直动态生成。 首先&#xff0c;我们需要定义所需要实体类 public class CountDayData {ExcelProperty(value "业务员姓名")p…

css 设置字体渐变色和阴影

一、需求 我们平时写样式的时候可能遇到需要将字体设置成渐变色&#xff0c;这样能使界面整体美化提升&#xff0c;那么css怎么去实现这个功能呢&#xff1f;下面我介绍一种常用的方法&#xff0c;欢迎大家补充 二、渐变实现 先看效果图&#xff1a; 直接上代码&#xff1a; /…

Seem环境安装

创建虚拟环境 conda create -n seem python3.8 conda activate seem 安装相关依赖&#xff1a;&#xff08;不按照的话会报错&#xff09; sudo apt-get install openmpi-bin libopenmpi-devconda install gcc_linux-64pip install mpi4py 导入环境 export PYTHONPATH$(pwd…

开发效率之把握需求、减少返工

前言 当年初入软件开发行业的我&#xff0c;拿到需求就莽&#xff0c;要设计没设计&#xff0c;要分析没分析&#xff0c;结果就是没理清楚需求&#xff0c;致使频频返工。 需求没理解对&#xff0c;做得再多再好也白搭。 估算需求把握程度 假如每个IF分支的“是”加一分&…

2024 年全球顶级的 3 款 桌面 PDF 转换工具

桌面 PDF 转换器工具是一种软件应用程序&#xff0c;使用户能够将 PDF 文件与不同的文件格式相互转换。奇客PDF转换、Nitro Pro 和 Foxit PhantomPDF 是市场上最好的桌面 PDF 转换工具。 在选择最好的 PDF 转换器软件时&#xff0c;需要考虑的一个重要因素是它与其他软件的集成…

nvm 的安装及使用 (Node版本管理器)

目录 1、nvm 介绍 2、nvm安装 3、nvm 使用 4、node官网可以查看node和npm对应版本 5、nvm安装指定版本node 6、安装cli脚手架 1、nvm 介绍 NVM 全称 node.js version management &#xff0c;专门针对 node 版本进行管理的工具&#xff0c;通过它可以安装和切换不同版本的…

数据链路层解读

基本介绍 概述 数据链路层使用的信道主要有两种类型 点对点信道。使用一对一的点对点通信方式的信道。广播信道。使用一对多的广播通信方式的信道。由于广播信道上连接的主机很多&#xff0c;必须使用专用的共享信道协议来协调这些主机的数据发送&#xff0c;因此通信过程比较…

【Windows】共享文件夹拍照还原防火墙设置(入站,出站设置)---图文并茂详细讲解

目录 一 共享文件夹(两种形式) 1.1 普通共享与高级共享区别 1.2 使用 二 拍照还原 2.1 是什么 2.2 使用 三 防火墙设置&#xff08;入栈&#xff0c;出站设置&#xff09; 3.1 引入 3.2 入站出站设置 3.2.1入站出站含义 3.3入站设置 3.4安装jdk 3.5使用tomcat进行访…

sql_lab之sqli中的堆叠型注入(less-38)

堆叠注入&#xff08;less-38&#xff09; 1.判断注入类型 http://127.0.0.3/less-38/?id1 and 12 -- s 没有回显 http://127.0.0.3/less-38/?id1 and 11 -- s 有回显 则说明是单字节’注入 2.查询字段数 http://127.0.0.3/less-38/?id1 order by 4 -- s 报错 http:/…