初识git · 远程操作

news2024/11/26 2:02:16

目录

前言:

理解分布式版本控制系统

远程仓库

仓库操作

克隆仓库

推送和抓取

特殊文件

取别名

标签管理


前言:

在基本操作,分支管理这几个部分,我们都会在本地仓库操作了,但是目前还没有办法将自己的代码远程推送到仓库里面,所以本文,我们学习远程操作,操作完之后,我们就可以将自己的代码远程推送到我们自己的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的远程操作和标签管理就介绍完咯~

感谢阅读!

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

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

相关文章

uniapp 实现input聚焦时选中内容(已封装)兼容微信小程序

老规矩先来看看效果噻&#xff01; 从上面的录屏中我们可以看出&#xff0c;要实现input自由选中内容的功能是可以实现的&#xff0c;原理其实很简单。 直接运行即可 <template><view><!-- <input class"psd"type"digit" :value"in…

第二代 GPT-SoVITS V2:解锁语音克隆与合成的无限可能

在 AI 技术蓬勃发展的今天&#xff0c;第二代 GPT-SoVITS V2 如一颗璀璨的明星闪耀登场&#xff0c;为语音处理领域带来了前所未有的变革。它是一款集先进技术与强大功能于一身的声音克隆与语音合成工具&#xff0c;由 RVC 变声器创始人 “花儿不哭” 与 AI 音色转换技术 Sovit…

当小程序学会‘读心术’:表单处理的神秘法则

哈喽&#xff0c;我是阿佑&#xff0c;今天将给大家给咱们的小程序赋能——“读心术”&#xff01; 文章目录 微信小程序的表单处理表单元素&#xff1a;小程序的“语言”表单事件&#xff1a;小程序的“听觉”表单提交&#xff1a;小程序的“表达”总结 微信小程序的表单处理 …

Oracle数据库系统表空间过大,清理SYSTEM、SYSAUX表空间

一.前言 在oracle数据库中&#xff0c;system为系统表空间&#xff0c;存放着一些我们经常用到的系统表和视图&#xff0c;sysaux为辅助表空间&#xff0c;辅助着系统表空间。这两个表空间不宜添加数据文件&#xff0c;会使系统表空间过于臃肿&#xff0c;从而影响数据库的使用…

【Jenkins】2024 最新版本的 Jenkins 权限修改为 root 用户启动,解决 permission-denied 报错问题

最新版本的 Jenkins 修改 /etc/sysconfig/jenkins 中的 JENKINS_USERroot不会再生效&#xff0c;需要按照以下配置进行操作&#xff1a; vim /usr/lib/systemd/system/jenkins.service然后重启就可以了 systemctl daemon-reload # 重新加载 systemd 的配置文件 systemctl res…

Shell编程-案例一(数据库备份服务监测)

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们前面学习了那么多命令&#xff0c;以及涉及到部分逻辑判断的问题。从简单来说&#xff0c;他就是Shell编程&#xff0c;…

基于Multisim三极管B放大系数放大倍数测量电路设计(含仿真和报告)

【全套资料.zip】三极管B放大系数放大倍数测量电路电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.用三个数码管显示B的大小&#xff0c;分别显示个位、十位和百位。 2.显示范围…

springboot041师生健康信息管理系统(论文+源码)_kaic

摘 要 随着移动应用技术的发展&#xff0c;越来越多的用户借助于移动手机、电脑完成生活中的事务&#xff0c;许多的传统行业也更加重视与互联网的结合。 本论文主要介绍基于java的师生健康信息管理系统&#xff0c;运用软件工程原理和开发方法&#xff0c;采用springboot框架…

C++ 进阶:类相关特性的深入探讨

⭐在对C 中类的6个默认成员函数有了初步了解之后&#xff0c;现在我们进行对类相关特性的深入探讨&#xff01; &#x1f525;&#x1f525;&#x1f525;【C】类的默认成员函数&#xff1a;深入剖析与应用&#xff08;上&#xff09; 【C】类的默认成员函数&#xff1a;深入剖…

【凸优化】Legendre变换、共轭函数、对偶

推荐文章 [凸优化-凸共轭]Legendre and Legendre-Fenchel transforms - 知乎 (zhihu.com) 一、Legendre变换 1、几何解释1 Legendre 变换通过选择斜率 作为新的自变量&#xff0c;将函数描述为它的斜率与相应的 x 的函数值之间的关系。几何上&#xff0c;它可以理解为用函…

Vert.x,认证与授权 - HTTP基本认证

几乎所有的线上系统都离不开认证和授权&#xff0c;Vert.x auth相关组件提供了丰富(Session&#xff0c;JTW, OAuth&#xff0c;…)&#xff0c;便捷的认证和授权支持。 当前&#xff0c;使用最多是Web应用&#xff0c;所以在后续讨论中&#xff0c;都是关于Vert.x auth在Web应…

kernel32.dll下载地址:如何安全地恢复系统文件

关于从网络上寻找kernel32.dll的下载地址&#xff0c;这通常不是一个安全的做法&#xff0c;而且可能涉及到多种风险。kernel32.dll是Windows操作系统的核心组件之一&#xff0c;负责内存管理、进程和线程管理以及其他关键系统功能。因为kernel32.dll是系统的基础文件&#xff…

IDEA如何给debug断点加上筛选条件判断

前言 我们在使用IDEA开发Java应用时&#xff0c;经常是需要进行代码调试的&#xff0c;这就需要打断点进行操作。但有些时候&#xff0c;我们只希望在符合某种条件的情况下&#xff0c;才去到这个断点&#xff0c;不符合的情况下&#xff0c;直接跳过断点&#xff0c;这其实也…

【linux】线程 (三)

13. 常见锁概念 &#xff08;一&#xff09;了解死锁 死锁是指在一组进程中的各个进程均占有不会释放的资源&#xff0c;但因互相申请被其他进程占有的&#xff0c;且不释放的资源&#xff0c;而处于的一种永久等待状态 &#xff08;二&#xff09;死锁四个必要条件 互斥条件…

深度学习(一)基础:神经网络、训练过程与激活函数(1/10)

深度学习基础&#xff1a;神经网络、训练过程与激活函数 引言&#xff1a; 深度学习作为机器学习的一个子领域&#xff0c;近年来在人工智能的发展中扮演了举足轻重的角色。它通过模仿人脑的神经网络结构&#xff0c;使得计算机能够从数据中学习复杂的模式和特征&#xff0c;…

COLA架构生成DDD项目

1.下载代码 https://github.com/alibaba/COLA 2.执行命令 2.1 shell Linux mvn archetype:generate \-DgroupIdcom.xxc \-DartifactIdcola-springboot-demo \-Dversion0.0.1 \-Dpackagecom.xxc.demo \-DarchetypeArtifactIdcola-framework-archetype-web \-DarchetypeGrou…

我是类(最终版)

文章目录 再看构造函数类型转换static静态成员友元内部类匿名对象对象拷贝时的编译器优化 再看构造函数 本标题的目的是解决如下问题&#xff1a;当实现MyQueue时&#xff0c;我们不需要写默认构造函数&#xff0c;因为编译器会调用Stack的默认构造&#xff0c;但是&#xff0…

01 设计模式-创造型模式-工厂模式

工厂模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的设计模式之一&#xff0c;它提供了一种创建对象的方式&#xff0c;使得创建对象的过程与使用对象的过程分离。 工厂模式提供了一种创建对象的方式&#xff0c;而无需指定要创建的具体类。 通过使用工厂模式…

vue 页面导出gif图片 img 导出gif 超简单~

1.首先需要新建一个文件件 新建gif文件夹。这两个文件在文章最后面需要可自提 2.出gif分为两种情况 第一种情况 页面是img标签&#xff0c;直接导出图片作为gif 第二种情况 页面是div标签&#xff0c;需要导出div里面的图片作为gif 2.1页面是img标签&#xff0c;直接导出图…

电脑异常情况总结

文章目录 笔记本无症状息屏黑屏 笔记本无症状息屏黑屏 &#x1f34e; 问题描述&#xff1a; 息屏导致黑屏&#xff1b;依次操作计算机--》右键--》管理--》事件查看器--》Windows日志--》系统&#xff1b;从息屏到异常黑屏之间出现了很多错误&#xff0c;如下&#xff1a;事件…