Git学习笔记(三)

news2024/12/24 8:52:19

导航小助手

五、远程操作

5.1 理解分布式版本控制系统

5.2 远程仓库

5.2.1 新建远程仓库

5.2.2 克隆远程仓库

5.2.3 向远程仓库推送

5.2.4 拉取远程仓库


五、远程操作

5.1 理解分布式版本控制系统

前面博客所介绍的 关于 Git 的内容(比如说:工作区、暂存区、版本库,各种命令的使用 等),都是在本地电脑上进行的~

而 Git 其实是一个分布式的版本控制系统!

Git 所提供的分支,可以让每一个人只对自己所需要实现的功能 进行开发,最后只需要与 master分支 进行合并即可,有冲突的就要解决合并冲突;这就使得项目的完成效率有很大的提高,不用自己一个人噗嗤噗嗤的完成~

当然,Git 不仅仅只依靠 分支 来完成 多人协作开发 的任务:因为上面的操作都是在 本地进行完成的,即 只有一台服务器上完成的;那肯定是不能多个人 抱着一台电脑 在那里,这个人开发一会儿 那个人开发一会儿,这样的话肯定是失去了效率的~

于是,Git 就提出了一个想法:让每一个人的电脑上都有一个独立且完整的仓库,然后每一次修改的时候,都将电脑上修改的内容推送给对方!这样的话,在安全性方面,比如说 如果一台电脑上出现了一些故障,那么 就可以在另一个电脑上也是存在着资料的,此时 就可以直接复制一下那台电脑即可;当然,如果两台电脑不在同一局域网内,相互访问不了,那就没有办法推送了!比如说 同事生病了,他的电脑没有开机,此时 也是推送不了了;此时 如果自己的电脑坏了,那也是推送不了的;此时 这个也不是最终的办法~

于是,Git 就提供了一个 中央服务器,这个 中央服务器 在24h内不停地运行~

当然,我们也可以把这个 中央服务器 仓库,叫成 "远程仓库"~

此时,每一个电脑上都可以克隆一份 中央服务器 的仓库,然后在自己电脑上进行提交修改的时候,就可以推送到 中央服务器,其他人就可以直接从中央服务器 拉取下来~

这样的话,就不怕其他人的电脑出现什么问题了~

传统的操作系统作用于 当个计算机或服务器 上的任务管理或资源分配;而分布式操作系统 则作用于多台计算机 之间的协作和资源共享~


在这个世界上,有这么一些大佬,就创建了这样一个网站, github,帮助完成 "远程仓库" 的角色(当然,github是国外的网站,速度比较慢一点);国内也有 gitee网站,也起到类似的作用~

github链接https://github.com/Gitee - 码云 链接https://gitee.com/

5.2 远程仓库

5.2.1 新建远程仓库

新建远程项目仓库:


 填写基本信息:

创建成功:

  


 在创建成功后,我们可以对这个远程仓库进行依稀诶基本的设置:


解释 Issues模板文件的作用:让有问题的人 与 当前仓库的人员 进行有效交流的地方~

 


解释 Pull Request模板文件的作用:

对于开发者来说,想要开发功能的时候,肯定不是在 master分支 上开发的,肯定是在其他分支上开发的(如 dev分支),最终 merge操作(但是 这样是非常危险的,在学习git的时候可以做一做),但是在实际上是不会让开发者 直接进行 merge操作的~

实际上,开发者需要提一个PR(即 Pull Request),可以这样理解:需要提出一个合并申请单(为啥合并、dev分支 有哪些功能 ......),申请单 是给管理员之类的人员看的,只有 他们同意了的话,才可以进行 merge操作~

5.2.2 克隆远程仓库

使用 HTTPS协议 克隆远程仓库:

接着就可以转到 云服务器上,使用 git clone 命令,后面加上 刚刚复制过来的 HTTPS链接:

git clone HTTPS协议链接

 需要注意的是,想要执行 克隆操作的话,不可以在 任意一个本地仓库 所存在的目录里面去执行(这里是 不可以在 gitcode目录 里面执行)


此时的状态可以用一张图来表示:

我们可以使用下面的命令来查看 远程仓库的仓库名(默认的仓库名是 origin):

git remote

 如果想要知道更详细的信息,那么就可以在后面加上一个 -v选项:

git remote -v

fetch权限 表示 拉,是把远程仓库里面的给克隆到自己电脑上的权限;push权限 表示 推,是把自己电脑里面的上传到远程仓库的权限~


使用 SSH协议 克隆远程仓库:
SSH协议 使用的是 公钥加密+公钥登录 的机制,想要使用SSH协议 进行克隆远程仓库 的操作的话,需要 自己本地上服务器上的公钥 放到 Git服务器上进行管理~

如何看 码云 平台上有没有配置 公钥:


复制 SSH链接之后:

 

现在需要再配置一下公钥才可以:

第一步:创建 SSH Key。在用户主目录下,看看有没有 .ssh目录,如果有,再看看这个目录下有没有 id_rsa(私钥,保存在自己服务器上,不能对外展示) 和 id_rsa.pub(公钥,如果有 直接配置到相应位置即可)这两个文件,如果已经有了,可直接跳到下一步。如果没有,需要创建 SSH Key:

此时,就需要手动创建这两个文件:

ssh-keygen -t rsa -C "邮箱"
    注意:这里的 邮箱 需要和码云上配置的邮箱一样(可以在 设置-基本设置-邮箱管理 中查看)

 

 第二步,就需要把 公钥 一字不少的复制到 码云上的相关位置:

 

最后就输入一下 当前码云账户的密码即可,此时就成功添加了一个公钥:

第三步,就可以直接使用 下面的命令进行 SSH协议 克隆远程仓库了:

git clone SSH协议链接

 

5.2.3 向远程仓库推送

基本流程(以 master分支为例):

首先,肯定是在 自己的电脑上进行开发的,即:在 工作区 进行修改,修改过后 使用 add命令 添加到 暂存区;

接着,使用 commit命令,将暂存区中的内容 提交到 本地仓库 中的 master分支;

此时,远程仓库是看不到 本地仓库的修改,就需要本地仓库使用 push操作,将其中的修改 推送 到远程仓库的 master分支下(将 本地仓库中的 某一个分支 推送 到远程仓库的 某一个分支)~


以一张图来解释:


 演示:

不过需要注意的是,name、email配置项的内容 必须要和 代码托管平台(码云)上面的配置项一模一样(我的name暂时还不一样,所以还需要修改一下):

讲本地仓库中的内容 推送到远程仓库,需要使用下面的命令:

git push 远程主机名 本地分支名:远程分支名
    注意:如果 "本地分支名" 和 "远程分支名" 一样,则可以省略 : 及其之后的 远程分支名
          即:git push 远程主机名 本地分支名

此时,就会推送成功了,我们就可以在码云上看到推送的内容了:

5.2.4 拉取远程仓库

当本地仓库的代码 领先于 远程仓库的时候,为了让远程仓库的代码保持最新,必须使用 push操作,将本地仓库中的最新提交 推送给远程仓库~

但是,如果说 远程仓库的代码 领先于 本地仓库的时候,这时候 本地仓库想要看到 远程仓库中的代码,此时就需要进行 pull操作(拉取操作)~

举个例子:

有一个远程仓库,A克隆了一个仓库到本地,里面写了"hello git~",推送到远程仓库了,此时 远程仓库里面也有一个"hello git~";B也克隆了仓库一份到本地,此时 里面有一个"hello git~",B又加了一个"hello world",之后推送到远程仓库;此时,远程仓库里面就有了 "hello git~、hello world"~

此时,远程仓库 里面的代码就比 A 的本地仓库要新,就出现了这样的状态:需要把 远程仓库 里面的代码 拉取到 A 的本地仓库中~


目前只有一台服务器,所以简单一点,直接在 远程仓库(码云)上进行修改操作,也起到类似的效果(日常使用的时候,一定不要在远程仓库直接修改啊):

之后在进行修改,提交:

我们使用下面的命令 来拉取远程仓库即可(pull操作 其实是一次性帮助做了 拉取+合并 分支 的操作): 

git pull 远程主机名 远程分支名:本地分支名
    注意:如果 "远程分支名" 和 "本地分支名" 一样,则可以省略 : 及其之后的 本地分支名
          即:git pull 远程主机名 远程分支名

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

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

相关文章

输入和输出处理

目录 1.File类 2.流 2.1.InputStream 2.2.OutputStream 总结 内容仅供学习交流,如有问题请留言或私信!!!!! 有空您就点点赞 1.File类 文件:相关记录或存放在一起的数据的集合 Java程序如…

高考考了657分想重新复读一年,又害怕白费一年

高考考了657分想重新复读一年,又害怕白费一年。 如果你想重新复读一年,可能需要考虑到以下几点: 复读的代价:复读需要花费一年的时间和精力,而且这个过程中你可能会面临很多挑战和压力,包括学习上的、生活上…

多模态之论文笔记BEiT, BEiT V2, BEiT V3

文章目录 OverviewBEiT1.0. Summary1.1. BEiT VS BERT2.1. Two Views: visual tokens2.1. Two Views: image patches3. Results BEiT V21.0. Summary1.1. Motivation2.1. Methods -- VQ-KD2.2. Methods -- patch aggregation3.1. Results -- image classification & semant…

ChatGPT Plugins内幕、源码及案例实战(二)

第6章 ChatGPT Plugins内幕、源码及案例实战 检索插件的API需要以下环境变量才能工作,如表6-2所示。 ChatGPT检索插件示例中,“.well-known”目录里面的ai-plugin.json是一个插件的说明文档,插件名为Retrieval Plugin,用于搜索用户的文档(如文件、电子邮件等),该插件…

HDLbits--Exams/review2015 fsm

示例: 题目的主要意思是:复位之后寻找1101序列,找到之后shift ena在四个周期内为1,此后输出counting,如果done-counting0,则counting一直为1,直到done-counting1,counting才为0&…

Redis高可用——持久化

Redis高可用——持久化 一、Redis 高可用的相关知识1、什么是高可用2、Redis的高可用技术3、持久化的功能4 redis持久化的方式 二、RDB持久化1、RDB持久化的触发方式①.手动触发②.自动触发③.其他自动触发机制 2、bgsave执行流程3、启动时加载 三、AOF持久化1.开启AOF2.执行流…

RSUYZM9智能路侧终端使用说明书

1 产品概览 本说明 书适用于 RSUYZM8型及 RSUYZM9型智能路侧终端 产品 。智能路 侧终端 作为智能 车路协同系统 路侧的基础 设备, 是车载设备和路口 所有 设备的 汇 聚点,路侧设备和车载之间 通过 LTE-V进行 信息交互 。同时 ,智能路侧终 端还…

【JavaWeb】JavaScript的基础语法

目录 1、JS简介 1.1、JavaScript的运行过程 1.2、了解浏览器的开发人员工具 2、JavaScript的书写形式 2.1、行内式 2.2、内嵌式 2.3、外部式 3、JavaScript的输入输出函数 4、JavaScript语法 4.1、变量声明 4.1.1、动态类型 4.2、基本数据类型 4.2.1、数字类型 4.…

青岛大学_王卓老师【数据结构与算法】Week03_13_线性表的链式表示和实现13_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享,另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础–…

C++数据结构笔记(6)栈的链式存储结构

对于栈的链式存储结构,实现原理本质上是受限的链表;此外与顺序存储不同的是,链式结构选用左边(头结点)作为栈的顶部,这样的好处是只要找到头结点即可实现插入元素等操作。 LinkStack.h头文件 #ifndef LIN…

CentOs7 64位 32位ISO镜像下载

链接: https://pan.baidu.com/s/1N181e6KFFFWPHhCTB7thMw 提取码: zht1

<Oracle>《(史上最完整)Linux 下安装Oracle数据库 - Oracle 19C By CentOS 8 》

《Linux 下安装Oracle数据库 - Oracle 19C By CentOS 8 》 1 说明1.1 前言1.2 资源下载 2 安装步骤2.1 上传安装包2.2 下载数据库预安装包2.3 安装数据库预安装包2.4 安装Oracle数据库2.4.1 第一次安装报错2.4.2 解决安装报错第一步:安装libnsl.so.1第二步&#xff…

MATLAB 层次分析法

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

文件上传靶场upload-labs通关

文章目录 前言Pass-01(JavaScript绕过)Step1、分析源码Step2、修改webshell文件后缀名Step3、修改报文重新发送Step4、使用webshell程序测试是否能连接 Pass-02(MIME-Type绕过)Step1、分析源码Step2、burp抓包,修改数据…

docker启动springboot项目构建的镜像 并通过Nginx配置反向代理

1.首先准备好springboot项目构建的docker镜像 如果不会的去看我另一篇博客 docker构建springboot项目镜像 docker image list |grep alice2.通过命令启动镜像 注意: -p后面的端口号 前面可以随便写:后面必须是你springboot项目中application.yml的端口,不然 你启动起来 访问…

进阶(组件通讯)/react生命周期

如果是数值就在外面加{} 给组件传递任意类型数据 父子组件数据传递 兄弟组件传递 context的使用(多级嵌套) children属性 props校验 默认值 生命周期

通用分页详解【下】

目录 前言 一、通用分页的核心思想 二、PageBean的分页要素及优化 三、SQL的通用 1.获取总记录数 2.获取分页语句 四、PageTag的核心逻辑见解 五、运行流程 案例运用 注意: 1.pageBean优化 2.tld文件 3.分页标签助手类 4.Servlet层 5.jsp页面 6.结果输…

一款IP合并和分解工具(二)

本文是对上一篇文章的补充,看过《一款IP合并和分解工具(一)》的知道,cidr-merger工具在windows上使用需要用命令行,不是很方便,在这通过python的tkinter进行二次开发,写一个可视化的界面 目录 …

2bit反射型超表面设计

1.单patch扫参 1)确定单元周期(最好0.3波长到0.5波长) 2)确定介质介电常数。(小一点比较好,带比较宽,一般选F4B2.65) 3)确定介质板厚度。厚一点好,最大3mm&a…

乱七八糟随便记录

建立Statement对象的作用是? 正确答案: C 你的答案: C (正确) A.连接数据库 B.声明数据库 C.执行SQL语句 D.保存查询结果 解释: 1、Statement对象用于执行不带参数的简单SQL语句。 2、Prepared Statement 对象用于执行预编译SQL语句。 3、Callable Sta…