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.rhkb.cn/news/225672.html

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

相关文章

全正版商用视频素材网站,一个字:绝

大家心心念念的全正版商用视频素材网站终于来了&#xff0c;今天给小伙伴们推荐一个我的新宠&#xff0c;已经替大家体验了一番&#xff0c;不论是设计&#xff0c;还是搜索&#xff0c;都恰到好处的合适&#xff0c;完全就是为影视人、媒体人量身打造的&#xff01; 当当当&am…

亚马逊美国站ASTM F2613儿童折叠椅和凳子强制性安全标准

ASTM F2613折叠椅和凳子安全标准 美国消费品安全委员会&#xff08;CPSC&#xff09;发布的ASTM F2613儿童折叠椅和凳子的强制性安全标准&#xff0c;已于2020年7月6日生效&#xff0c;并被纳入联邦法规《16 CFR 1232儿童折叠椅和凳子安全标准》。 亚马逊要求在美国站上架的儿…

QT小技巧 - 使用QMovie进行gif切帧

简介 使用QMovie 将 gif 进行切帧&#xff0c; magick 进行合并代码 QString gifPath "E:\\workspace\\qt\\gif2imgs\\203526qre64haq3ccoobqi.gif"; // 你的图片QMovie movie(gifPath); movie.setCacheMode(QMovie::CacheNone);qDebug() << movie.frameCou…

Python——yolov8识别车牌2.0

目录 一、前言 二、关于项目UI 2.1、修改界面内容的文本 2.2、修改界面的图标和图片 三、项目修改地方 四、其他配置问题 一、前言 因为后续有许多兄弟说摄像头卡顿&#xff0c;我在之前那个MATS上面改一下就可以了&#xff0c;MAST项目&#xff1a;基于YOLOv8的多端车流检…

Matlab/Simulink的一些功能用法笔记(3)

01--引言 最近加入到一个项目组&#xff0c;有一些测试需要去支持&#xff0c;通过了解原先团队的测试方法后&#xff0c;自己作了如下改善&#xff0c;大大提高了工作效率。这也许就是软件开发的意义吧&#xff0c;能够去除一些重复的机械的人工操作并且结果还非常不可靠。 …

ArcGIS渔网的多种用法

在ArcGIS中有一个渔网工具&#xff0c;顾名思义&#xff0c;可以用来创建包含由矩形像元所组成网络的要素类。不太起眼&#xff0c;但它的用途却有很多&#xff0c;今天跟大家分享一篇关于渔网的多种用途。 1.马赛克地图制作 2.基于网格的设施密度统计制作马赛克地图 准备材…

马萨诸塞州道路数据集预处理

今天我们将分享Massachusetts Roads遥感道路语义分割数据集,并会在下期使用FC-DenseNet进行遥感影像道路提取。 Massachusetts Roads遥感道路语义分割数据集覆盖了美国马萨诸塞州超过2600km2的面积,包含城市、城镇、农村和山区等多种地区的道路信息,图像大小均为1500像素1500像…

Duboo-入门到学废【上篇】

目录 1&#x1f95e;.什么是duboo 2&#x1f32d;.架构图 3.&#x1f37f;快速入门 4.&#x1f9c7;浅浅理解 1.什么是duboo&#x1f936;&#x1f936;&#x1f936; Dubbo是一个由阿里巴巴开发的基于Java的开源RPC框架。它提供了高性能、透明化的远程方法调用&#xff0…

亚马逊云科技 re:Invent 2023 产品体验:亚马逊云科技产品应用实践 王炸产品 Amazon Q,你的 AI 助手

意料之中 2023年9月25日&#xff0c;亚马逊宣布与 Anthropic 正式展开战略合作&#xff0c;结合双方在更安全的生成式 AI 领域的先进技术和专业知识&#xff0c;加速 Anthropic 未来基础模型的开发&#xff0c;并将其广泛提供给亚马逊云科技的客户使用。 亚马逊云科技开发者社…

嵌入式-stm32-用PWM点亮LED实现呼吸灯

一&#xff1a;知识前置 1.1、LED灯怎么才能亮&#xff1f; 答&#xff1a;LED需要低电平才能亮&#xff0c;高电平是灯灭。 1.2、LED灯为什么可以越来越亮&#xff0c;越来越暗&#xff1f; 答&#xff1a;这是用到不同占空比来实现的&#xff0c;控制LED实现呼吸灯&…

MySQL日期查询 今天、明天、本月、下月、星期、本周第一天、本周最后一天、本周七天日期

文章目录 今天日期明天日期本月第一天本月最后一天下个月第一天当前月已过几天当前月天数当前月所有日期获取星期本周第一天本周最后一天获取本周的七天日期 今天日期 select curdate()明天日期 select DATE_SUB(curdate(),INTERVAL -1 DAY) AS tomorrow本月第一天 select d…

STM32 cubeMX 光敏电阻AD转化实验

文章代码使用 HAL 库。 文章目录 前言一、光敏电阻介绍二、光敏电阻原理图解析三、ADC采样介绍1. 工作原理&#xff1a;2. ADC精度&#xff1a; 四、STM32 cubeMX配置ADC采样五、代码编写总结 前言 实验开发板&#xff1a;STM32F051K8。所需软件&#xff1a;keil5 &#xff0c;…

ElasticSearch 的 mapping 参数 - fields

概要 在 es 中&#xff0c;一个字段可能运用于不同的场景&#xff0c;但是某个字段类型的使用场景是有局限的 下面&#xff0c;我们先来看一段 es 查询语句&#xff1a; $must ["bool" > ["should" > [["range" > ["user_id.r…

tekton 发布 kubernetes 应用

tekton 发布 kubernetes 应用 基于Kubernetes 服务部署 Tekton Pipeline 实例&#xff0c;部署完成后使用tekton来完成源码拉取、应用打包、镜像推送和应用部署。 本文实现一个 golang-helloworld 项目 CI/CD 的完整流程&#xff0c;具体包括以下步骤&#xff1a; 从 gitee…

设计模式-依赖注入模式

设计模式专栏 模式介绍模式特点应用场景依赖注入和控制反转的区别代码示例Java实现依赖注入模式Python实现依赖注入模式 依赖注入模式在spring中的应用 模式介绍 依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;是一种面向对象编程中的设计模式&…

【目标跟踪】解决多目标跟踪遮挡问题

文章目录 前言一、判定遮挡目标二、扩展目标框三、结论 前言 目标跟踪在发生遮挡时&#xff0c;极其容易发生Id Switch。网上许多算法忽视跟踪遮挡问题,同时网上相关资料也很少。博主为了解决跟踪遮挡&#xff0c;翻阅大量论文。分享其中一篇论文。论文链接&#xff1a;https:…

网站被恶意扫描怎么办(上WAF)

在网络安全领域&#xff0c;有一大类工具被广泛使用&#xff0c;且作用不可忽视&#xff0c;它就是网络安全扫描器。扫描器是一种专门设计用来评估计算机、网络或者应用中已知的弱点的计算机程序&#xff0c;但是很多人恶意使用&#xff0c;找到网站弱点进行攻击。 扫描器的种…

Vue和React的运行时,校验引入包的上下文差异

背景 系统使用 webpack 5 模块联邦实现微前端&#xff0c;有关如何实现跨应用的代码共享&#xff0c;可参考 如何优雅的实现跨应用的代码共享 里的第三大点。 总之&#xff0c;这里是其他应用使用了某个应用共享出来的reg文件&#xff0c;引入方式为&#xff1a; import REG …

LSTM的记忆能力实验 [HBU]

目录 模型构建 LSTM层 模型训练 多组训练 模型评价 模型在不同长度的数据集上的准确率变化图 模型汇总 总结 长短期记忆网络&#xff08;Long Short-Term Memory Network&#xff0c;LSTM&#xff09;是一种可以有效缓解长程依赖问题的循环神经网络&#xff0e;LSTM 的…

ARM12.26

整理三个按键中断代码 key_it.h #ifndef __KEY_IT_H__ #define __KEY_IT_H__ #include"stm32mp1xx_gpio.h" #include"stm32mp1xx_gic.h" #include"stm32mp1xx_exti.h" #include"stm32mp1xx_rcc.h" #include"led.h" void k…