从0到1学会Git(第三部分):Git的远程仓库链接与操作

写在前面:前面两篇文章我们已经学会了git如何在本地进行使用,这篇文章将讲解如何将本地的git仓库和云端的远程仓库链接起来并使用

为什么要使用远程仓库:因为我们需要拷贝我们的代码给别人以及进行协同开发,就需要有一个云端仓库进行代码的存储和同步,所以我们使用远程仓库来完成该目标。

1.常用的托管服务(远程仓库)

1.1 GitHub(开源):属于国外网站,容易上不去
1.2 GitLab:自己搭建,属于公司使用较为常用的
1.3 Gitee:码云,国内第三方提供,使用较多(也是本篇文章所使用的远程云端仓库)

2.使用码云

完成正常网站都需要的注册登录后,我们需要的是创建一个我们自己的仓库

2.1 创建一个云端仓库

在我们个人主页的右上角选择新建一个仓库
在这里插入图片描述
输入仓库的名称和仓库的介绍,点击创建仓库

在这里插入图片描述
然后下面这三个选项,我们全部不选,保持默认即可,因为我们的本地仓库已经实现了配置

在这里插入图片描述
可以看到我们的仓库已经建立完成了
在这里插入图片描述

2.2生成ssh公钥

首先进入我们本地的仓库,打开git bash。使用下列指令来获得我们本地的SSH公钥

ssh-keygen -t rsa

输入上述指令然后一路回车即可。
效果展示:
我们进入到我们的本地仓库中来,然后执行该命令
在这里插入图片描述
然后我们执行完命令后,问yes或者no或者让你按enter,通通可以不用管,按回车一直往下就可以了。
在这里插入图片描述
执行下列命令获得我们的公钥:

cat ~/.ssh/id_rsa.pub

获得我们的公钥,然后将其复制下来。
在这里插入图片描述

2.3将本地仓库和码云账户进行关联

进入我们码云的设置
在这里插入图片描述
我们在这里面选择SSH公钥:
在这里插入图片描述
将我们生成的公钥放到这里面来,他会自己生成一个标题,我们可以选择重新设置一个,这个不会产生什么影响

在这里插入图片描述
点击保存实现对公钥的配对。
在这里插入图片描述
在我们的本地仓库中输入以下指令,可以知道我们的配置是否成功

ssh -T git@gitee.com

在这里插入图片描述
然后因为你是第一次访问这个网址,他会对你进行询问,我们选择输入yes,然后看到下面弹出来的successfully即可知道我们已经完成了ssh协议的配对.

3.将本地仓库和远程仓库进行添加和配送操作(附带链接操作):

使用下列命令完成本地仓库和云端远程仓库配对的功能。

git remote add origin SSH地址(这里是你云端仓库ssh协议copy的地址)

我们进入自己的仓库,然后选择SSH协议,将其中的SSH地址给复制下来
在这里插入图片描述
然后我们使用上述命令:告诉本地仓库,远程仓库是什么,其中origin是名称的意思,指的是你想连接的远程仓库你想把它叫做什么,我们直接取默认的origin即可,不需要进行改变 。
如果出现以下问题:
在这里插入图片描述
表明我们在git bash执行的文件夹不是一个本地仓库文件,如果要将该文件夹和云端仓库进行链接,需要先执行一下git init将该文件夹生成为一个本地仓库即可。
如果输入完连接指令,没有任何的提醒,即实现了连接。
如何将我们本地的代码提交上去

git push origin master

把master分支提交到了origin仓库里:
在这里插入图片描述
第一次提交的时候会出现提示这种情况,出现这样表示我们的本地仓库已经提交成功了。
完整的指令为:

git push [-f][--set-upstream][远端名称[本地分支名][:远端分支名]]

-f表示的是强制覆盖,即本地代码强行覆盖云端代码
–set-upstream 表示推送到远端的同时并且建立起和远端分支的关联关系
如果当前分支已经和远端分支关联,可以省略分支名和远端名
直接

git push

将master分支推送到已关联的远端分支
在这里插入图片描述
此时表明的是我们没有将两个分支进行捆绑起来,所以我们先使用

git push --set-upstream origin master:master

然后再次使用git push即可
我们使用git branch -vv即可查看到我们各个分支的关系

4.从远程仓库克隆

git clone <仓库路径>[本地目录]

我们使用一个全新的文件夹来实现这个操作
在这里插入图片描述
我们新建一个test2文件夹来进行此操作,将此链接复制下来
在这里插入图片描述
然后输入

git clone 链接

或者git clone <仓库路径>[本地目录]
则会直接在当前目录下克隆下来一个仓库
在这里插入图片描述
进去即可得到我们克隆下来的本地仓库
可以看到只有master分支,没有dev分支,因为我们的远程仓库只存了master分支而没有存dev分支
在这里插入图片描述

5.从远程仓库中抓取和拉取

抓取和拉取的区别:抓取是把云端代码拉下来,然后需要人为进行合并。拉取是把云端代码拉下来,直接进行合并。
抓取:将仓库里的更新抓取到本地,不会进行合并
remote name就是origin

git fetch [remote name][branch name]

拉取:将远端仓库的修改拉取到本地并自动进行合并,等同于fetch+merge

git pull [remote name][branch name]

上传操作(位于test1文件夹下,我们首先往云端里面新建增加一个文件,以达到在test2文件夹下面的文件和云端仓库文件不一样的效果):
在这里插入图片描述
在这里执行了git push之后可以看到master分支和origin里面的master分支实现了同步的功能。
在这里插入图片描述
拉取操作(test2文件夹下):
在这里插入图片描述
现在在test2下面是没有file04.txt文件的,然后我们将其拉取下来
在这里插入图片描述
在这里插入图片描述
可以看到已经有了file04,但是master里面没有file04文件
在这里插入图片描述
在这里插入图片描述
然后我们把远程的分支合并过来,可以看到文件夹下已经有了file04
在这里插入图片描述
抓取操作(test2文件夹下,因为已经实现了文件的一致,所以题主偷懒,就直接不放图片了):

git pull 

实现效果:git pull ==git fetch + git merge

6.远程冲突问题解决

用户a和b同时对文件c的第1行进行了更改,然后a进行了提交到云端仓库,b在进行提交的时候就会提醒出现问题。因为两行代码不同,会出现冲突问题。
解决方案:当b提交时出现报错后,先执行git pull,然后对代码进行修改,在执行git push即可。

7.有关git push和git pull的一点理解(主观性较强,可以不看)

解决冲突问题的核心其实就是会出现不一致的问题,所以建议在进行更改代码的时候(即不知道有没有人对有关代码进行更改),先执行git pull操作,再执行git push操作,就不会出现报错问题。题主是这么理解的,远程仓库会检测是谁执行了最后一次的git push操作(以仓库为单位,其实也就是以文件夹为单位),如果检测到是此本地仓库执行的,则执行git push操作会直接成功,相当于它意识到除了此本地仓库以外没有人更改了代码,只有你这个本地仓库在改代码,所以他会直接的默认覆盖or删除or修改操作。如果检测不是此本地仓库执行了最后一次的git push操作,则他会默认你没有拿到最新的云端仓库,已经有人对里面的代码进行了更改,所以你提交的git push操作里面,可能把上一个人的操作给覆盖了,即上一个人的操作你没有看到,可能会出现无意识的覆盖,此操作很危险,会出现问题,所以会报错。需要你git pull下来后,看到最新的代码,在执行git push才可。这也就是很多人说的,先pull在push的原因。
为了更好的理解这个问题,题主做了以下测试来进行验证:
首先我们新添加一个本地仓库test3,然后把云端仓库(也就是和test1保持一致的那个文件央视)克隆下来。

请添加图片描述
然后我们对文件的内容进行修改:
请添加图片描述
进行git push上去,发现没有问题(因为发现它git pull拉取下来后,没有人再进行新的push,即获得到了最新的版本文件,所以可以直接进行提交),所以直接push上去没有任何问题
请添加图片描述
我们在回到我们的test1文件夹(即最开始和云端仓库保持一致的文件夹):

可以发现里面的内容还是之前修改之前的内容,所以此时没有和云端仓库的内容保持一致。
在这里插入图片描述

我们修改他的内容。
请添加图片描述

然后提交到本地仓库。

请添加图片描述
然后在push到云端仓库的时候发生了报错,因为他检测到有别的本地仓库对里面的数据进行了更改,然后test1仓库没有进行pull操作,即没有拿到最新的仓库,所以会报错。
请添加图片描述
我们进行拉取操作
请添加图片描述
可以看到里面因为冲突,已经变成和本地仓库一样的问题了(即冲突之后,会将文件合并在工作区而不是本地仓库里,如果觉得有点饶,可以去看题主的git的第二部分的文章)
请添加图片描述
然后我们啥都不做,继续push,可以发现,仍然不行,因为我们的冲突问题依然存在,而解决后的问题的文件在工作区中,而不在本地仓库里面。
请添加图片描述
我们先将文件放到本地仓库中,然后执行git push操作,可以看到,已经成功的将文件上传了。

请添加图片描述
我们再将test1仓库下面的文件进行修改。
请添加图片描述

然后在不pull的情况下,将其再次提交上去,发现我们已经可以直接push了,因为检测到上一次git push的仓库就是test1,它默认test1用的就是最新的仓库,所以再次使用push操作不需要先拉取。
请添加图片描述
总结:如果对云端仓库的最后一次push操作是此仓库干的,则此仓库下次push不需要先进行pull操作。如果最后一次操作不是本仓库干的,则需要进行pull操作,且pull完成后需要先把文件放到本地仓库(因为可能会出现本地仓库冲突问题),为了保险起见,可以每次pull完,对数据处理完毕,进行一波add操作和commit操作,再进行push操作即可。(附:如果最后一次push操作是此仓库所操作的,则下次执行git pull不会有任何作用,因为云端仓库会认为,您已经有了最新的仓库,而您后续的操作是您想干的,他不会帮您更改文件内容or修复删除的文件?)

写在最后:码字不易,点个赞再走把

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

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

相关文章

【数据结构】C++实现AVL平衡树

文章目录 1.AVL树的概念2.AVL树的实现AVL树结点的定义AVL树的插入AVL树的旋转左单旋右单旋左右双旋右左双旋插入代码 AVL树的验证AVL树的查找AVL树的修改AVL树的删除AVL树的性能 AVL树的代码测试 1.AVL树的概念 二叉搜索树虽然可以提高我们查找数据的效率&#xff0c;但如果插…

模拟实现链式二叉树及其结构学习——【数据结构】

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; 之前我们实现了用顺序表完成二叉树(也就是堆)&#xff0c;顺序二叉树的实际作用就是解决堆排序以及Topk问题。 今天我们要学习的内容是链式二叉树&#xff0c;并且实现链式二叉树&#xff0c;这篇博客与递归息息相关&a…

Keepalived+LVS高可用集群

目录 一、keepalived介绍&#xff1a; 二、keepalived工具介绍&#xff1a; &#xff08;1&#xff09;管理 LVS 负载均衡软件&#xff1a; &#xff08;2&#xff09;支持故障自动切换&#xff1a; &#xff08;3&#xff09;实现 LVS 负载调度器、节点服务器的高可用性&…

合宙Air724UG LuatOS-Air LVGL API控件-二维码(Qrcode)

二维码&#xff08;Qrcode&#xff09; 示例代码 qrcodelvgl.qrcode_create(lvgl.scr_act(),nil)lvgl.qrcode_set_txt(qrcode,"https://doc.openluat.com/home")lvgl.obj_set_size(qrcode,400,400)lvgl.obj_align(qrcode, nil, lvgl.ALIGN_CENTER, 0, 0)创建 可以通…

【Nginx25】Nginx学习:连接限制和请求限制

Nginx学习&#xff1a;连接限制和请求限制 之前我们就已经学习过了一些和流量限制相关的配置指令&#xff0c;它们是 HTTP 核心配置中的内容 &#xff0c;不记得的小伙伴可以回去看一下 Nginx学习&#xff1a;HTTP核心模块&#xff08;七&#xff09;请求体与请求限流https://m…

第3章_瑞萨MCU零基础入门系列教程之开发环境搭建与体验

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

【网络编程】TCP Socket编程

TCP Socket编程 1. ServerSocket2. Socket3. TCP的长短连接4. Socket 通信模型5. 代码示例&#xff1a;TCP 回显服务器 流套接字&#xff1a; 使用传输层TCP协议 TCP: 即Transmission Control Protocol&#xff08;传输控制协议&#xff09;&#xff0c;传输层协议。 TCP的特点…

一文详解二叉搜索树

数据结构-二叉查找树 前言 **摘自百度百科&#xff1a;**二叉查找树&#xff08;Binary Search Tree&#xff09;&#xff0c;&#xff08;又&#xff1a;二叉搜索树&#xff0c;二叉排序树&#xff09;它或者是一棵空树&#xff0c;或者是具有下列性质的二叉树&#xff1a; 若…

JDK8特性——接口增强函数式接口Optional方法引用

文章目录 接口增强默认方法静态方法 函数式接口SupplierConsumerFunctionPredicate Optional 类以前对null 的处理Optional的基本使用Optional的常用方法 方法引用方法引用的格式对象名::方法名类名::静态方法名类名::引用实例方法类名::构造器数组::构造器 接口增强 在JDK8之…

智能远程监考方案助力企业考试化繁为简

在音视频数字化之旅中&#xff0c;轻装上阵。 近年来&#xff0c;在数字化浪潮之下&#xff0c;远程考试频繁成为各领域热词&#xff0c;各企业也纷纷改革求新&#xff0c;将原本的企业内部考试转移到线上&#xff0c;从而获取更低廉的组考成本&#xff0c;更高的管理效率&…

深度学习基础之梯度下降

1. 引言 梯度下降是一种用于最小化&#xff08;或最大化&#xff09;损失函数的优化算法。它是机器学习和深度学习中的一个关键概念&#xff0c;通常用于调整学习算法中的参数。 梯度下降背后的核心思想是迭代调整参数以最小化损失函数。它的工作原理是计算损失函数相对于每个…

【LeetCode-中等题】18. 四数之和

文章目录 题目方法一&#xff1a;双指针&#xff08;定2动2&#xff09; 题目 方法一&#xff1a;双指针&#xff08;定2动2&#xff09; 这题可以参考【LeetCode-中等题】15. 三数之和 区别在于&#xff0c;三数之和只需要用一个for循环定住一个数&#xff0c;然后设置两个前…

数据结构与算法(C语言版)P4---顺序表、链表总结

顺序表和链表&#xff08;双向带头链表&#xff09;的区别 顺序表&#xff1a; 优点&#xff1a; 支持随机访问。需要随机访问结构支持算法可以很好的使用。cpu高速缓存利用率&#xff08;命中率&#xff09;更高。存储密度高 缺点&#xff1a; 头部中部插入删除时间效率低。…

合宙Air724UG LuatOS-Air LVGL API控件-窗口 (Window)

窗口 (Window) 分 享导出pdf 示例代码 win lvgl.win_create(lvgl.scr_act(), nil) lvgl.win_set_title(win, "Window title") -- close_btn lvgl.win_add_btn_right(win, "\xef\x80\x8d") -- --lvgl.obj_set_event_cb(cl…

典型数据结构-图,图的存储、基本操作和遍历

图 引自&#xff1a;《数据结构教程》。 概念 图可以使得元素之间的关系是 多对多。图中任意两个数据元素之间都可能存在连接关系。图作为一种数据结构&#xff0c;可以表达数据元素之间广泛存在着的更为复杂的关系。在众多应用之中&#xff0c;如电子线路分析、工程计划分析、…

Junit单元测试异常处理方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Junit单元测试异常处理方法 前言案例准备一、类方法内处理异常二、测试方法中处理异常1.try/catch/finally 语句2.Test(expected)3.ExpectedException 前言 提示&#xff1a…

深度解析shell脚本的命令的原理之mv

mv 是 Unix 或 Linux 中的一个基本命令&#xff0c;用于移动或重命名文件和目录。以下是对这个命令的深度解析&#xff1a; 基本操作&#xff1a;mv 命令的基本操作是将一个或多个源文件或目录移动到一个目标文件或目录&#xff0c;或者重命名源文件或目录。这是通过改变文件系…

银河麒麟--国产操作系统-九五小庞

那么&#xff0c;我国国产操作系统现状到底如何呢&#xff1f; 自 1999 年徐冠华部长一语点破我们的产业软肋之后&#xff0c;国产操作系统起步于国家“七五”计划期间&#xff0c;目前国产操作系统均是基于Linux内核进行的二次开发&#xff0c;中国国产操作系统进入Linux元年…

CSS:隐藏移动端的滚动条的方式

目录 方式一&#xff1a;-webkit-scrollbar方式二&#xff1a;overflow方式三&#xff1a;clip-path方式四&#xff1a;mask 遮罩总结参考 移动端开发中&#xff0c;有一个横向滚动元素&#xff0c;产品告诉我不需要滚动条&#xff0c;我说这个简单&#xff0c;隐藏一下不就行了…

iText实战--在现有PDF上工作

6.1 使用PdfReader读取PDF 检索文档和页面信息 D:/data/iText/inAction/chapter03/image_direct.pdf Number of pages: 1 Size of page 1: [0.0,0.0,283.0,416.0] Rotation of page 1: 0 Page size with rotation of page 1: Rectangle: 283.0x416.0 (rot: 0 degrees) Is reb…