初识git · 远程操作
目录
前言:
理解分布式版本控制系统
远程仓库
仓库操作
克隆仓库
推送和抓取
特殊文件
取别名
标签管理
前言:
在基本操作,分支管理这几个部分,我们都会在本地仓库操作了,但是目前还没有办法将自己的代码远程推送到仓库里面,所以本文,我们学习远程操作,操作完之后,我们就可以将自己的代码远程推送到我们自己的gitee或者是github账户啦。
那么废话不多说,进入今日主题——远程操作。
理解分布式版本控制系统
git的本质是分布式的版本控制系统,版本控制我们已经知道了,git中通过改变HEAD指针的朝向,从而快速的实现版本回退等操作。
那么分布式,我们其实在分支管理章节有已经有所体会,对于master分支,作为最稳定的分支,一般不会在上面进行开发,对于其他分支,开发分支,以及bug分支,共同维护某个项目,这是分布式,一个项目交给多个分支完成,每个分支完成对应的操作。
最初,分布式可以理解为两个人的电脑互传对应的修改,所以两个人之间可以看到所有的文件,如果一个人的数据丢失了也不用担心,直接从另一个人的电脑上cv就可以了。
那么,实际上分布式操作的时候很少有两个人互相传数据的,一般都是一台机器作为中央服务器,也就是所有的代码,数据都会放在上面,谁的数据丢失了,谁的代码丢失了,都可以从上面cv代码回来。
所以,对于我们来说,中央服务器实际上是我们平常生活中使用的gitee的仓库,我们将该仓库作为中央服务器,代码也都是传在上面的,那么,我们如何新建一个远程仓库呢?
远程仓库
我们在gitee右上角有个加号,点击选择新建仓库,我们就进入到了该界面,那么名称是要有的,路径会默认生成,仓库的介绍也是一定要有的。
然后,是是否开源,我们可以先选择为私有,后面有开源的需求就可以直接开源即可。在新建仓库的时候,我们要注意的点是三个部分。
语言,肯定就是自己经常用什么语言就选择什么语言,.gitnore我们后面介绍。开源不用管。
那么对于模板来说,ReadMe文件是仓库的一般说明,也就是别人进入你仓库之后,第一眼看到的就是ReadMe文件,所以该文件的作用是用来具体介绍仓库是用来干什么的。第二个是Issue模板文件,这个文件与之后的Bug之类的有关,我们一会儿看看。第三个是Pull Request文件,是什么我们一会儿介绍。
最后就是分支模型,因为目前来说不是写项目的话,我们选择的一般是单分支模型,也就是只有一条分支,开发啊调试什么的都在上面进行。
此时,我们点击创建。
出现了如下的文件,对于README文件我们已经清楚,其中后缀有en的README文件是英文,非en的就是中文版的:
具体的内容我们都是可以自己编辑的。
那么我们看看Issue文件:
该文件所在的目录是.gitee里面,我们根据该文件的一个模板,大概也能猜出大体功能是什么,也就是发现Bug的一个报告模板,在Issue一栏我们可以看到:
这就是Issue的具体图形化,新建Issue试试:
在Issue一栏,我们可以设置对应的负责人,标签(里面不止有bug),还有该问题是在哪个分支上出现的,日期也有,并且可以选择置顶等级和优先级,这是非常符合企业级的管理的。
此时创建之后,
Issue里面就有了对应的报告,那么当问题解决了,我们可以在对应的状态里面点击已解决,此时一个bug就被我们解决了。
当然了,这个仓库如果是开源的,任何人都是可以提交Issue的,我们作为管理者,可以对Issue进行任何的处理,如拒绝等。
对于Pull Request来说呢,是一个分支合并请求,因为开发中的时候,不是能直接合并的,如果能随便合并,那么项目基本上就报废了,所以存在着合并请求的东西,我们作为管理者,自然是有权处理对应的请求的。
对于远程仓库的Pull Request和Issue就暂时讲解到这里。
仓库操作
克隆仓库
我们创建了仓库,自然是需要提交代码上去的,那么第一个点,我们如何克隆远程仓库到我们的本地呢?
此时,存在两种常用的克隆方法,一种是使用SSH协议,一种是使用https协议,对于SSH来说,安全性更高,更有保障,因为它是使用了公钥加密的。对于https协议呢,就没有那么多要注意的了,简简单单的克隆就可以了,我们先使用https协议作为例子:
使用https我们需要的是该字符串,然后使用git clone命令,注意,克隆远程仓库是不能在.git所在的目录创建的,所以我们还需要将原来的本地仓库删除:
此时,仓库就创建好了,创建好了之后,在基本操作那里我们提及最重要的两个信息是名字和邮箱,所以我们也应该配置上:
此时都是没有配置的。
此时,基本配置就做好了。
这是使用https协议克隆的仓库,那么我们将此仓库删除,使用SSH克隆一个。
如果我们直接使用git clone进行克隆的话,那么往往是会报错的:
不能克隆仓库往往是因为我们没有添加对应公钥:
在这里是我们添加公钥的地方,添加公钥之前,我们需要创建文件。
第一步是我们要查看用户的家目录下面是否存在.ssh文件:
这里是有的,那么我们进入:
里面只有这么多东西,而我们需要创建的是id_rsa,id_rsa.pub两个文件,pub是public,公钥的意思,对于id_rsa是私钥的意思,肯定是不能透露给其他人的,公钥就无所谓了。
ssh-keygen -t rsa -C "email"
然后我们退出来,在家目录下执行该命令,注意,邮箱是要输入我们自己的:
此时我们一路回车就可以了。
此时进入到ssh目录下:
我们打开对应的公钥文件:
此时这个一长串的,我们就需要全部复制下来。
然后到gitee添加即可:
添加好了之后,我们此时再次使用ssh协议就可以了:
此时就创建成功了,但是该公钥是只读的,我们应该到设置部分添加公钥,操作一样的,这里就不演示了。
那么我们的仓库克隆操作就完成了。
此时我们可以git remote查看远程仓库的信息:
我们仓库的原始名称就叫做origin。
-v显示了抓取和推送的地址,如果我们没有对应的权限也就看不到了。
那么现在演示推送和抓取。
推送和抓取
对于推送push,我们常用的操作如上,我们目前本地的分支和远程的分支都叫做master,所以我们可以直接git push master即可,此时我们不妨创建文件,push一下试试:
此时push成功了,那么我们看看gitee的提交记录:
此时push成功。如果我们是使用的https协议,每次推送需要输入口令相对来说就麻烦一点。
此时,我们实现一下抓取操作,这种情况是发生在远端仓库代码进度快于本地的,此时需要抓取,那么我们在gitee直接修改一下刚才提交的文件就可以了,但是注意,平时的代码修改是最好不要在gitee上修改的,这是个很不好的坏习惯:
此时修改成功。
pull来说就是远程在前,从远程pull到本地,push是本地push到远程,顺序还是很好理解的:
此时就成功了。
我们平常使用图形化界面的时候,如果没有.git文件,常常就会push出一大推无关的文件,此时,特殊文件.gitignore就出场了。
特殊文件
我们现在克隆仓库里面看看.gitignore里面有没有东西:
是有的,因为我们当时创建的时候,勾选了该文件,所以gitee自动帮我们初始化好了,由Linux的学习我们知道*的意思是通配符,所以*.d的意思就是所有以d为后缀结束的文件都不要追踪它,#的意思是注释,那么文件里面那么多,都是代表不要追踪的意思。
我们创建一个.so结尾的文件,看git的状态是否发生改变:
此时就没有,但是有的时候啊,我们有一个文件是.so结尾,但是是要传输的,那么怎么办呢?
此时只需要! + filename就可以了:
此时我们就可以传了。
那么有的时候,文件传不过去,,gitignore又不好找,我们可以使用check检查一下是为什么:
git check-ignore -v a.so就是说检查一下,为什么传不了。
对于传隐藏文件,如果我们不希望改变.gitignore,我们就可以git add -f filename即可。
取别名
对于有些命令实在是太长了,我们就可以对某些命令取别名:
git config --global alias.st status
--global代表的是这台电脑的所有仓库都可以使用该命令,如果没有了就只有当前仓库能够使用,alias.newname dir即可。
此时我们就可以将status简写为st了。
标签管理
本文呢简单介绍一下标签管理,因为涉及的内容就只有创建标签,操作标签,就没了。
如果要创建标签,我们应该切换到我们需要创建标签的分支上。
使用git tag [tagname]即可。使用命令git tag可以查看所有标签。
而标签创建好了之后,默认是打在最新一次的commit上的。
那么我们如何修改标签到指定的commit上呢?
git tag tagname + commit id就可以了,commit id也可以使用短的,使用pretty=oneline就可以了。
注意,标签是按照字母排序的,不是按照创建时间排序的。
-a指定标签名,-m文字说明。
此时我们tree .git一下:
refs下面就有了一个标签咯。
删除就很简单了,-d即可。
因为创建的标签都是在本地,只有push到远端才有,所以我们可以git push origin [tagname]:
此时我们上Gitee看看:
标签部分也有了。
git push origin --tags
如果有很多标签,可以使用如上的指令一次性推送。
但是删除就相对麻烦一点了:本地删除之后,远程也需要删除,就像这样。
有关git的远程操作和标签管理就介绍完咯~
感谢阅读!
相关文章:

初识git · 远程操作
目录 前言: 理解分布式版本控制系统 远程仓库 仓库操作 克隆仓库 推送和抓取 特殊文件 取别名 标签管理 前言: 在基本操作,分支管理这几个部分,我们都会在本地仓库操作了,但是目前还没有办法将自己的代码远程…...

深度学习:卷积神经网络(CNN)详解
卷积神经网络(CNN)详解 卷积神经网络(Convolutional Neural Network, CNN)是一种专为处理具有网格结构数据(如图像)的深度学习模型。CNN通过引入卷积层、池化层等独特的操作,能够有效提取局部特…...

软件测试学习笔记丨Pycharm实用技巧
本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/23459 PyCharm 应该是大多数 python 开发者的首选 IDE,每天我们都在上面敲着熟悉的代码,写出一个又一个奇妙的功能。它是帮助用户在使用 Python 语言开发时提高其效率的…...

Vue学习笔记(二、Vue.js的引入与对象创建)
一、引入vue 1.通过cdn引入: <script src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js"></script> 2.本地引入: <script src"./lib/vue.js"></script> 二、创建Vue对象 代码参考如下: …...

从0-1搭建金融智能助理保姆级教程:拆箱即用的微信公众号后端+AI Agents智能体框架
大模型LLM 应用AI Agents框架,为我们提供了非常便利的自动化执行任务的能力。微信公众号(订阅号) 是非常适合落地各种AI Agents的场景,我们可以利用微信公众号提供的文本、图像、语音的输入,在自己服务器上部署一套API框架,把自己…...

Yolov10训练的餐盘菜品目标检测软件(包含源码及数据集)
本文摘要 摘要:本文主要使用YOLOV10深度学习框架自训练了一个“餐盘菜品目标检测模型”,基于此模型使用PYQT5实现了一款界面软件用于功能演示。让您可以更好的了解和学习,该软件支持图片、视频以及摄像头进行目标检测,本系统所涉…...

Active Directory(活动目录)密码审核工具
什么是Active Directory密码审核 Active Directory密码审核涉及监控用户密码的状态及其身份验证尝试,以便 IT 管理员收到有关弱 Active Directory密码或任何异常身份验证行为的通知。 Active Directory密码审核可帮助管理员评估用户密码的强度并采取必要措施来加强…...

Transformer为什么使用LayerNorm而不是BatchNorm?
01 引言 层归一化(Layer normalization ) 是Transformer模型中的一项重要技术,它通过对每一层的输入进行归一化,帮助稳定和加速训练。无论输入的规模或分布如何,它都能确保模型处理信息的一致性。在自注意力机制、多头注意力机制和位置编码…...

理解和重构目录结构:Java 中的父子关系管理
理解和重构目录结构:Java 中的父子关系管理 一、前言1. 问题背景2. 目录项结构3. 实现重构逻辑4. 示例代码5. 结果与输出 二、总结 好的,我们将目录结构调整为使用中文数字表示的标题。以下是重新组织后的内容: 一、前言 在软件开发中&…...

ES6面试题:(第一天)
目录 1.var,let,const的区别 2.说说你对数组的解构和对象的解构的理解? 3.ES6的新语法 4.Map对象和Set对象的区别 5.Set实现数组去重 1.var,let,const的区别 使用 var 声明的变量,其作用域为全局作用域或者为所在的函数内局部作用域,且存在变量提升…...

【ChatGPT】什么是ChatGPT:基础介绍与使用场景
什么是ChatGPT:基础介绍与使用场景 在当今科技快速发展的时代,人工智能工具正逐步融入我们生活的方方面面。你是否曾在编写报告时陷入思路停滞?或者在客户服务中焦急等待响应?这些问题,随着 ChatGPT 的出现࿰…...

工业自动化为什么依赖光耦隔离器 --- 腾恩科技
光耦合器隔离器在工业自动化中必不可少,可确保信号传输,同时保护敏感电子设备和人员免受高压影响。选择合适的光耦合器隔离器取决于对操作环境和隔离要求的了解。本文将重点介绍在为工业应用选择光耦合器隔离器时需要考虑的关键因素。 光耦合器隔离器在工…...

Linux环境下Jmeter执行压测脚本
Linux环境下Jmeter执行压测脚本 前提官网下载Jmeter执行脚本 前提 注意:Jmeter的运行依赖Java环境 官网下载Jmeter 1、下载链接:https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.zip 2、解压 unzip apache-jmeter-5.6.3.zip 执行脚本…...

PROFINET开发或EtherNet/IP开发嵌入式板有用于工业称重秤
这是一个真实案例,不过客户选择不透露其品牌名称。稳联技术的嵌入式解决方案助力工业称重设备制造商连接至任意工业网络。多网络连接使得称重设备能够轻松接入不同的控制系统,进而加快产品的上市时间。 我们找到了稳联技术的解决方案。他们成熟的技术与专…...

OracleT5-2 Solaris11安装
1、Solaris11安装 在光驱中插入Solaris11的光盘后,在ok提示中boot cdrom {0} ok boot cdrom NOTICE: Entering OpenBoot. NOTICE: Fetching Guest MD from HV. NOTICE: Starting additional cpus. NOTICE: Initializing LDC services. NOTICE: Probing PCI devices. N…...

详解 JuiceFS 在多云架构下的数据同步与一致性
随着大模型流行,GPU 算力资源正变得日益稀缺,传统的“算力跟着存储跑”的策略需要转变为“存储跟着算力跑”。为了确保数据一致性和管理的便捷性,企业通常在特定地区的公有云上选择对象存储作为所有模型数据的集中存储点。当进行计算任务调度…...

赛氪贡献突出获评优秀合作伙伴,第十九届环境友好科技竞赛落幕
2024年10月19日,第十九届全国环境友好科技竞赛终审答辩会在同济大学顺利举行,标志着这一环境领域顶级学科竞赛的又一盛事圆满落幕。本次竞赛由清华大学、同济大学、西安建筑科技大学及中国环境科学学会共同主办,吸引了全国各高校相关专业学生…...

GrowingIO埋点(前端)
GrowingIO埋点(前端) 一、CDN集成SDK 1、初始化 当用户加载页面的时候,会异步加载 WebJS SDK,不会影响到用户的加载速度,所以一般建议把这段代码加入到 <head></head> 中的最下面,这样能…...

MySQL-15.DQL-排序查询
一.DQL-排序查询 -- 排序查询 -- 1.根据入职时间,对员工进行升序排序 select * from tb_emp order by entrydate asc ;-- 2.根据入职时间,对员工进行降序排序 select * from tb_emp order by entrydate desc ;-- 3.根据 入职时间 对公司员工进行 升序排序…...

SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
文章目录 前言一、控制器层代码二、服务层代码三、代码亮点分析 前言 SpringBoot的同步excel导出方式中,服务会阻塞直到Excel文件生成完毕,如果导出数据很多时,效率低体验差。有效的方案是将导出数据拆分后利用CompletableFuture,…...

黑马软件测试第一篇_数据库
说明: 数据库是专门用来存储数据的软件 注意: 对于测试工作而言, 如果项目页面没有实现, 但是我们又想要校验数据,则可以直接通过查询数据库实现 关系: 具体存在的商品录入后 -> 产生对应的数据(存到数据库中) -> 最后会被加载到项目页面中 数据库的分类 分类: 1> 关…...

第十六届蓝桥杯嵌入式组准备
最近我看很多人都在准备蓝桥杯的比赛了,这里我给大家整理一下历届真题或模拟题的讲解与源码 蓝桥杯嵌入式第十二届省赛真题二 蓝桥杯嵌入式第十三届省赛真题一 蓝桥杯嵌入式第十三届省赛真题二 蓝桥杯嵌入式第十四届省赛真题 蓝桥杯嵌入式第十四届模拟考试一 蓝…...

城乡供水信息化系统如何建设?
城乡供水信息化建设是一个综合性的过程,旨在通过现代信息技术提升农村供水系统的管理效率和服务质量。这一过程包含以下关键内容: 一、信息化基础设施建设 感知层建设:在农村饮水工程的关键部位,如水源地、水厂、供水管网等&#…...

【Petri网导论学习笔记】Petri网导论入门学习(七) —— 1.5 并发与冲突
导航 1.5 并发与冲突1.5.1 并发定义 1.14定义 1.15 1.5.2 冲突定义 1.17 1.5.3 一般Petri网系统中的并发与冲突定义 1.18一般网系统中无冲撞概念阻塞(有容量函数K的P/T系统,类似于冲撞)一般Petri网中并发与冲突共存情况 1.5 并发与冲突 Petr…...

MongoDB常用语句
1.只统计记录总数: let result await CorrectionRecordModel.countDocuments(db);2.数组遍历,循环体中可以有调用异步函数: for(let item of result2){if(item && Tool.checkNotEmptString(item.auth_id) && (item.status …...

自动创作PPT 利用提示词和大模型自动创建ppt
背景 ppt创作可以分为3个步骤:1.大纲撰写;2.内容填充;3.ppt实现。我前几天用十分钟的时间做了一个ppt,主讲大模型测评。这里给大家分享一下我的创作过程。 关于步骤1和步骤2,最近发现一个非常好的提示词,…...

二分类评价指标AUROC和AUPR
文章目录 一、AUROC(Area Under the Receiver Operating Characteristic Curve)二、AUPR(Area Under the Precision-Recall Curve)三、区别3.1 案例3.2 如何选择? 在分类任务中, AUROC(受试者工…...

雅迪控股营收、净利润和毛利下滑:销量大幅减少,屡屡抽查不合格
《港湾商业观察》廖紫雯 日前,雅迪集团控股有限公司(以下简称:雅迪控股,01585.HK)发布业绩报告,披露2024年上半年营收净利双下滑等情况,在业绩承压的情况下,雅迪控股遭多家券商下调…...

【网络安全】记一次漏洞挖掘
Spring Cloud Data Flow 热点漏洞详细分析 环境搭建 2.10.0 - 2.11.2版本都可以,这里下的2.11.2 源码下载https://github.com/spring-cloud/spring-cloud-dataflow/tree/v2.11.2 在src/docker-compose里面是有docker文件的,使用docker即可 最近是爆出…...

Redis遇到Hash冲突怎么办?
这是小伙伴之前遇到的一个面试题,感觉也是一个经典八股,和大伙分享下。 一 什么是 Hash 冲突 Hash 冲突,也称为 Hash 碰撞,是指不同的关键字通过 Hash 函数计算得到了相同的 Hash 地址。 Hash 冲突在 Hash 表中是不可避免的&am…...