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

news2024/11/17 19:44:54

写在前面:前面两篇文章我们已经学会了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的原因。

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

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

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

相关文章

nginx配置-gzip

1、想看nginx配置的时候&#xff0c;发现没有nginx命令&#xff0c;是没有配置环境变量。 cd etc/ vim profile 加入 unset i unset -f pathmunge PATH/usr/local/nginx/sbin:$JAVA_HOME/bin:$PATH //这一行 export JAVA_HOME/usr/local/soft/jdk8 expo…

qpushbutton 样式表

QPushButton {color:#ffffff; /*文字颜色*/background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop:0 #aa55ff, stop: 1 #1296db);/*背景色*/border-style:outset; /*边框风格*/border-width:2px;/*边框宽度*/border-color:#0055ff; /*边框颜色*/border-radius:10…

如何用 Java 找到字符串中的元音

这个题目其实不难&#xff0c;这是一个公司面试的时候要求的题目。 这个公司的面试有点意思&#xff0c;他们希望 Zoom 看我的电脑&#xff0c;然后让我解决问题。 题目 题目就非常简单了&#xff0c;他们给了我 2 个字符串。 其中一个是测试字符串&#xff0c;另外一个是元…

I2C 验证中需要注意的问题

I2C验证中需要注意的问题 1.NACK出现的时刻2.Restart和Start区别3.保持时间&#xff08;Thd&#xff09; 1.NACK出现的时刻 通常&#xff0c;在Master访问到错误的Device ID时&#xff0c;Slave会返回Nack&#xff0c;表示访问失败。此外&#xff0c;在Master对Slave读访问时&…

JWT认证、drf-jwt安装和简单使用、实战之使用Django auth的User表自动签发、实战之自定义User表,手动签发

一 JWT认证 在用户注册或登录后&#xff0c;我们想记录用户的登录状态&#xff0c;或者为用户创建身份认证的凭证。 我们不再使用Session认证机制&#xff0c;而使用Json Web Token&#xff08;本质就是token&#xff09;认证机制。Json web token (JWT), 是为了在网络应用环境…

沙丁鱼优化算法(Sardine optimization algorithm,SOA)求解23个函数MATLAB

一、沙丁鱼优化算法 沙丁鱼优化算法(Sardine optimization algorithm,SOA)由Zhang HongGuang等人于2023年提出&#xff0c;该算法模拟沙丁鱼的生存策略&#xff0c;具有搜索能力强&#xff0c;求解精度高等特点。 沙丁鱼主要以浮游生物为食&#xff0c;这些生物包括细菌、腔肠…

性能测试 —— Jmeter定时器

固定定时器 如果你需要让每个线程在请求之前按相同的指定时间停顿&#xff0c;那么可以使用这个定时器&#xff1b;需要注意的是&#xff0c;固定定时器的延时不会计入单个sampler的响应时间&#xff0c;但会计入事务控制器的时间 1、使用固定定时器位置在http请求中&#xf…

5.9.Webrtc线程事件处理

在前面的课程中呢&#xff0c;我已经向你介绍了事件处理的一些基础知识&#xff0c;那今天呢&#xff0c;我们再来看一下外边儿rtc下事件处理的基本逻辑是什么&#xff1f; 那首先呢&#xff0c;我们来看一下事件是如何协调线程工作的&#xff0c;那就如果这张图所展示的有两个…

一起学数据结构(6)——栈和队列

上篇文章中&#xff0c;对栈的概念及特点进行了解释&#xff0c;并且给出了栈实现的具体代码。本篇文章将给出队列的基本概念及特点。并给出相应的代码。 1. 队列的概念及结构&#xff1a; 在给出队列的概念之前&#xff0c;先给出上篇文章中提到的栈的概念&#xff1a;一种只…

JVM系列 运行时数据区

系列文章目录 第一章 运行区实验 文章目录 系列文章目录前言一、堆&#xff08;Heap&#xff09;1.1、新生代/Young区1.1.1、Eden区1.1.2、Survival区 1.2、年老代&#xff08;old区&#xff09; 二、虚拟机栈&#xff08;Stack&#xff09;2.1、栈顶缓存技术2.2、溢出2.3、栈…

约瑟夫环(循环列表实现)

约瑟夫&#xff08;Joseph&#xff09;问题的一种描述是&#xff1a;编号为1&#xff0c;2&#xff0c;3&#xff0c;…&#xff0c;n的n个人按顺时针方向围坐一圈。每人持有一个密码&#xff08;正整数&#xff09;。一开始任选一个正整数作为报数上限值m&#xff0c;从第一个…

vscode c++解决包含头文件红色波浪线问题

安装c/c插件后&#xff0c;按ctrlshiftp&#xff0c; 点击打开了c_cpp_properties.json文件&#xff0c;对其中的IncludePath进行编辑&#xff0c;示例如下&#xff1a; "includePath": ["${workspaceFolder}/**","${workspaceFolder}/include/**&q…

FastChat

Fast Chat是一个用于训练/部署和评估基于大型语言模型的聊天机器人的开发平台。其核心功能包括&#xff1a; 最先进模型的权重/训练代码和评估代码(例如Vicuna/FastChat-T5)基于分布式多模型的服务系统&#xff0c;具有Web界面和与OpenAI兼容的RESTful API。 安装 pip instal…

Dajngo01_Django框架基础与环境搭建

Dajngo01_Django框架基础与环境搭建 在正式开始学习Django之前&#xff0c;我们先简单了解一下Web应用程序的本质&#xff1a; 接收并解析HTTP请求&#xff0c;获取具体的请求信息处理本次HTTP请求&#xff0c;即完成本次请求的业务逻辑处理构造并返回处理结果——HTTP响应 那么…

Redis 数据一致性方案的分析与研究

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ 一般的业务场景都是读多写少的&#xff0c;当客户端的请求太多&#xff0c;对数据库的压力越来越大&#xff0c;引入缓存来降低数据库的压力是必然选择&#xff0c;目前业内…

【移动开发】最新uniapp开发的多端影视APP+后端对接的苹果CMS源码(可打包多端app)

介绍&#xff1a; 分享一款uniapp开发的多端影视APP源码&#xff0c;后端对接的是苹果10CMS。 这个APP有缓存、投屏、回放记录、收藏等功能&#xff0c;非常完善。 会员中心也使用苹果cms的数据。 可以打包到多个端的代码。 本APP前端用的UI框架是特漂亮的colorUI&#xff0…

当我们谈外包,我们在谈什么?

大家好&#xff0c;我是苍何&#xff0c;周末发小来找我玩耍&#xff0c;聊到了他当初在华为外包的经历&#xff0c;感触挺大的&#xff0c;给大家做下分享。 小 Z 大学专科材料专业毕业&#xff0c;毕业后报名了 IT 培训班&#xff0c;学习了一年&#xff0c;之后面试去了华为…

关于安卓grovvy开发(一)bugly混淆自动上报

背景 打包&#xff0c;mapping&#xff0c;上传&#xff0c;这些是不是都困扰了开发很多。苦于复制粘贴&#xff1f;反正我是。于是&#xff0c;有了这个 最终效果 最终的效果&#xff0c;就是点击项目的打包gradle&#xff0c;复制mapping文件且进行bugly混淆的自动上报。 …

基于单片机超声波测距语音播放

一、系统方案 本设计采用52单片机作为主控器&#xff0c;HC-SR04测距&#xff0c;液晶1602显示&#xff0c;按键设置报警阀值&#xff0c;语音报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 uint dist; // 保存超声波模块测量到的结果…

基于SSM的网上医院预约挂号系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…