当前位置: 首页 > news >正文

Git学习笔记(第6章):GitHub操作(远程库操作)

目录

6.1 远程库操作

6.1.1 创建远程库

6.1.2 命名远程库

6.1.3 本地库推送到远程库(push)

6.1.4 远程库拉取到本地库(pull)

6.1.5 远程库克隆到本地库(clone)

6.2 团队内协作

6.3 跨团队协作

6.4 SSH免密登录


6.1 远程库操作

命令

作用

git remote -v

查看所有远程仓库的别名和地址

git remote add 远程仓库别名 远程仓库地址

给远程仓库起别名

git push 远程仓库别名/地址 本地仓库分支

将本地分支上的内容推送到远程仓库

git pull远程仓库别名/地址 远程仓库分支

将远程仓库分支上的最新内容拉取到本地仓库的当前分支,并进行合并

git clone 远程仓库地址

将远程仓库的内容克隆到本地

6.1.1 创建远程库

  • Step1:点击右上角的“+” → New repository

  • Step2:输入远程仓库名 → 选择远程仓库的类型 → 点击“Create Repository”
    • 1远程仓库名一般与本地仓库名保持一致
    • 2:由于不同用户的账号具有唯一性,因此不必担心远程仓库名与别人的远程仓库名冲突(即便相同也没有关系)。
    • 3:远程仓库的类型
      • Public公共库:所有用户都具有“读取”的权限(开源精神)
      • Private私有库:私有库的成员数量存在一定限制,超出人数限制将会收取一定费用。因此,如果需要搭建公司内部的代码托管中心,最好选择GitLab。

       至此,远程仓库创建完毕(此时远程仓库还未有代码)。一旦创建了远程仓库,就会看到2种不同协议的连接,均可指代远程仓库的位置:

  • HTTPS:https://github.com/DenverLiao/git-demo.git
  • SSH:git@github.com:DenverLiao/git-demo.git

6.1.2 命名远程库

基本语法

  • git remote -v:查看所有远程仓库的详细信息

远程仓库的别名(remote name) 与 远程仓库的URL  的对应关系

  • git remote add 远程仓库别名 远程仓库地址:给远程仓库起别名

案例实操

  • Step1:查看所有远程仓库的别名和地址
  • Step2:给远程仓库起别名
    • 注:远程仓库的别名一般与远程仓库的名字保持一致
  • Step3:再次查看所有远程仓库的别名和地址
    • 命名一次会出现两个别名
    • fetch可以使用该别名;push推送也可以使用该别名
    • fetch = clone克隆 + pull拉取

        创建远程仓库别名有几个重要的意义:

  • 简化命令行操作:别名可以简化命令行操作,而不是每次都输入完整的远程仓库URL,你只需要使用别名,这样可以提高效率并减少输入错误的可能性。
  • 提高可读性:别名可以是有意义的单词,而不是较长的URL。这样做可以使命令更易读、易懂,特别是在团队协作的环境中。
  • 隐藏具体实现细节:使用别名可以隐藏实际的远程仓库细节。如果远程仓库的URL发生变化,只需更新别名的指向,而不需要修改所有相关的本地仓库设置。
  • 提高可维护性:当你需要切换或更新远程仓库时,只需更改别名的指向而不需要修改整个代码库的远程URL。
  • 易于记忆:别名通常是简短且易于记忆的,这有助于快速进行操作而不必查找远程仓库的详细信息。

6.1.3 本地库推送到远程库(push)

基本语法

  • git push 远程仓库别名/地址 本地仓库分支
    • 注:需要指明将本地仓库的哪一个分支进行推送。

案例实操

要求:将本地分支master上的内容推送到远程仓库

  • Step1:分支切换

  • Step2:本地库推送到远程库
    • 1:由于GitHub服务器位于国外,因此对网络的要求较高(可能需要尝试多次)。
    • 2:两种登录方式(浏览器账号登录;口令登录)

  • Step3:查看远程仓库的变化
    • 可见,master分支上的内容已经推送到GitHub创建的远程仓库。

6.1.4 远程库拉取到本地库(pull)

问题引入

        成员1(大佬)完成代码编写并推送到远程仓库后,随后就到外地旅游了。然而,在旅游途中,公司来电表明该代码有些问题,想要其进行修改。此时,成员1(大佬)直接登录GitHub对远程仓库进行修改并提交。几天后,成员1(大佬)旅游回到公司,发现其本地库的代码(并不是最新版本)和远程库的代码并不完全一致(不同步)。因此,成员1(大佬)需要使用“pull”命令将远程库拉取到本地库。

基本语法

  • git pull 远程仓库别名/地址 远程仓库分支

案例实操

  • Step1:修改远程仓库代码,并提交远程仓库
    • 默认提交到远程库的master分支(Commit directly to the master branch)

  • Step2:远程库拉取到本地库

  • 执行“pull”命令,会完成如下操作:
    • 操作1:拉取代码
    • 操作2:提交本地库
    • 效果:本地库和远程库实现同步

6.1.5 远程库克隆到本地库(clone)

基本语法

  • git clone 远程仓库地址

案例实操

要求:成员2(新手)将成员1(大佬)的远程库克隆到自己的本地库

  • 准备工作:删除凭据管理器(由于此处只有一台电脑,因此需要此操作)

  • Step1:打开Git-Bash客户端

  • Step2:克隆代码
    • 1:由于公共库的“读”权限是公开的,因此克隆操作无需进行任何的登录操作

  • 2:克隆操作会自动初始化本地仓库

  • 3:克隆操作会自动给远程仓库起别名为“origin”

  • 执行“clone”命令,会完成如下操作:
    • 操作1:拉取代码
    • 操作2:初始化本地仓库
    • 操作3:创建别名

6.2 团队内协作

  • Step1成员1(大佬DenverLiao邀请成员2(新手Bigbeard-Liao
    • Step1.1:添加合作者

  • Step1.2:复制邀请函(本质为链接)
    • 邀请函:https://github.com/DenverLiao/git-demo/invitations

  • Step1.3:发送邀请函(可通过微信等方式将邀请函发送给成员2)
  • Step2成员2(新手Bigbeard-Liao接受成员1(大佬DenverLiao的邀请
    • Step2.1:成员2在浏览器地址栏访问收到的邀请函(链接)
    • 注:由于此处只有一台电脑,因此需要先退出成员1的账号,然后再登录成员2的账号,最后才能执行上述操作。

  • Step2.2:点击接受邀请

  • :完成上述操作后,成员2账号下可以看到该远程仓库。

  • Step3:成员2修改文件,并推送到远程仓库。
    • Step3.1:修改文件  →  添加暂存区  →  提交本地库

  • Step3.2:本地库推送到远程库

  • Step4:成员1(大佬)、成员2(新手)查看远程仓库

  • Step5:成员1(大佬)拉取远程仓库到本地仓库
    • 拉取前:成员1的本地库 ≠ 成员1的远程库 = 成员2的本地库
    • 拉取后:成员1的本地库 = 成员1的远程库 = 成员2的本地库

6.3 跨团队协作

Step1:fork(外援)

  • Step1.1:外援登录自己的账号

  • Step1.2:外援使用浏览器访问成员1的远程仓库地址(成员1需要提前将远程仓库的地址复制发给邀请跨团队协作的外援)

  • Step1.3:外援点击fork”按钮将(成员1的)远程库叉到(自己的)远程库

  • Step1.4:查看效果

 

Step2Step3:clone、push(外援)

  • 理论操作:远程库克隆到本地库 → 修改文件 → 添加暂存区 → 提交本地库 → 本地库推送到远程库
  • 简化操作:在线编辑fork过来的文件 → Commit changes

Step4:pull request(外援)

  • Step4.1:点击“Pull requests” → 点击“New pull request”

  • Step4.2:点击“Create pull request”

  • Step4.3:填入标题“title”和描述“description” → 再次点击“Create pull request”

Step5:审核(成员1)

  • Step5.1:查看Pull request请求

  • Step5.2:查看外援修改的代码

  • 注:如果成员1对代码存在疑问或给对方回复感谢,可以通过“Pull request → Conversation → Add a comment”进行聊天,讨论有关代码的相关内容(类似于聊天功能)

Step6:merge(成员1)

  • Step6.1:点击“Merge pull request”合并代码(若代码审核通过)

  • Step6.2:点击“Confirm merge”再次确认

  • Step6.3:点击“Code” → 点击“hello.txt” → 查看效果

Step7:pull(成员1)

  • Step7.1:查看拉取前的文件内容

  • Step7.2:远程库拉取到本地库

  • Step7.3:查看拉取后的文件内容

6.4 SSH免密登录

  • 问题引入:仔细观察,我们可以发现远程仓库中不仅有HTTPS链接(已讲解),还有SSH链接(未讲解),如下图所示。然而,未进行任何配置时,该SSH链接是无法使用的。
    • You don't have any public SSH keys in your GitHub account. You can add a new public key, or try cloning this repository via HTTPS.
    • 你的GitHub账户中没有任何的SSH公钥。你可以添加一个新的公钥,或尝试通过HTTPS链接克隆此仓库。

Step1:本地宿主机生成SSH秘钥对(公钥、私钥)

  • Step1.1:进入当前用户的家目录

  • Step1.2:输入命令ssh-keygen -t rsa -C *****@qq.com
    • ssh-keygen:SSH密钥生成器工具的命令
    • -t rsa: 指定要生成的密钥类型    RSA:非对称加密算法,常用于安全通信
    • -C *****@qq.com:在生成的密钥中添加注释,通常用于标识密钥的用途或所有者

  • Step1.3:连续点击3次“Enter”回车键

  • Step1.4:查看生成的SSH密钥对(其中私钥保存本地,公钥黏贴到GitHub)

Step2:GitHub设置SSH公钥

  • Step2.1:复制id_rsa.pub文件(公钥)内容
  • Step2.2:登录GitHub → 点击用户头像 → Settings → SSH and GPG keys → New SSH Key

  • Step2.3:命名公钥、黏贴公钥 → Add SSH Key

Step3:测试SSH免密登录

  • Step3.1:修改文件 → 添加暂存区 → 提交本地库

  • Step3.2:本地库推送到远程库(使用SSH链接实现免密登录)

  • Step3.3:查看远程库的代码

相关文章:

Git学习笔记(第6章):GitHub操作(远程库操作)

目录 6.1 远程库操作 6.1.1 创建远程库 6.1.2 命名远程库 6.1.3 本地库推送到远程库(push) 6.1.4 远程库拉取到本地库(pull) 6.1.5 远程库克隆到本地库(clone) 6.2 团队内协作 6.3 跨团队协作 6.4 SSH免密登录 6.1 远程库操作 命令 作用 git remote -v 查看所有远程…...

【主题广范|见刊快】2024年海洋工程与测绘遥感国际学术会议(ICOESRS 2024)

【主题广范|见刊快】2024年海洋工程与测绘遥感国际学术会议(ICOESRS 2024) 2024 International Conference Ocean Engineering and Surveying Remote Sensing(ICOESRS 2024) 一、【会议简介】 随着人类对海洋的认识和开发不断深入,海洋工程和测绘遥感技术的研究和应…...

解决el-radio-group只触发一次的问题

1.需求是点击合并后&#xff0c;出来二次确认框。现在的问题是点击完出现二次确认框后&#xff0c;再次点击不出来二次确认框了 2.一开始代码是这样写的 <el-radio-group v-model"unfold" size"mini" changechangeMerge><el-radio-button :labe…...

openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_RSA_keygen.c

文章目录 openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_RSA_keygen.c概述笔记END openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_RSA_keygen.c 概述 官方指出 : RSA key 如果小于2048位, 就属于弱key 官方demo中, 给出的默认key长度为4096位 从名字生成上下文 初始化上下文…...

密码搜|Facebook 8组问答,搞定Pixel与广告之间的关系!

Q1&#xff1a;Pixel&#xff08;像素/代码&#xff09;是什么&#xff1f; A&#xff1a;Pixel有多种称呼&#xff1a;Pixel、像素、代码。它只是一种分析工具&#xff0c;可帮助广告主了解用户在网站上采取的操作&#xff0c;继而衡量广告成效。 设置Facebook Pixel像素代码…...

Apache StringUtils:Java字符串处理工具类

简介 在我们的代码中经常需要对字符串判空&#xff0c;截取字符串、转换大小写、分隔字符串、比较字符串、去掉多余空格、拼接字符串、使用正则表达式等等。如果只用 String 类提供的那些方法&#xff0c;我们需要手写大量的额外代码&#xff0c;不然容易出现各种异常。现在有…...

设计模式 代理模式(静态代理 动态代理) 与 Spring Aop源码分析 具体是如何创建Aop代理的

代理模式 代理模式是一种结构型设计模式&#xff0c;它通过创建一个代理对象来控制对真实对象的访问。这种模式可以用于提供额外的功能操作&#xff0c;或者扩展目标对象的功能。 在代理模式中&#xff0c;代理对象与真实对象实现相同的接口&#xff0c;以便在任何地方都可以使…...

【EI会议征稿通知】第七届先进电子材料、计算机与软件工程国际学术会议(AEMCSE 2024)

第七届先进电子材料、计算机与软件工程国际学术会议(AEMCSE 2024&#xff09; 2024 7th International Conference on Advanced Electronic Materials, Computers and Software Engineering 第七届先进电子材料、计算机与软件工程国际学术会议(AEMCSE 2024)将于2024年5月10-1…...

Verilog基础:强度建模(一)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 一、强度建模基础 Verilog HDL提供了针对线网信号0、1、x、z的精准强度建模方式&#xff0c;这样可以允许将两个线网信号进行线与操作从而更加精确地描述出硬件行…...

Spring Boot各类变量的使用

文章目录 1. 变量类型2. 获取变量2.1 获取方式2.2 获取方法2.2.1 通过Value注入获取变量值2.2.2 System.genenv 获取变量值2.2.3 System.getProperty 获取变量值2.2.4 Environment 获取变量值2.2.5 ConfigurationProperties 获取变量值2.2.6 SpringApplication.run 程序启动参数…...

Hive管理UDF详解

大数据集群下,共有三种管理Hive UDF的方式,如下: 名称重启Hive服务Jar保存目录场景直接JAR配置需要HDFS开发辅助JARs目录配置需要本地目录防止意外覆盖文件可重载辅助JAR配置不需要本地目录频繁更新UDF场景{HIVE_HOME}/auxlib目录需要本地目录不建议{HIVE_HOME}/lib目录需要…...

bug笔记:解决 HTTP Error 500.30 - ASP.NET Core app failed to start

总结下后端部署windos iis环境net6版本&#xff0c;500.30问题报错的一种解决方案&#xff1a; 一、问题描述 二、解决方案 检查下是否安装了net6对应的环境&#xff0c;是否已经安装 然后在事件管理器>Windows日志>应用程序&#xff0c;里面查看详细异常记录 在iis下面…...

理解pytorch系列:transpose是怎么实现的

在PyTorch中&#xff0c;transpose()是一种操作&#xff0c;它交换张量中两个指定维度的位置。实现这一点的关键在于不实际移动数据&#xff0c;而是通过改变张量的元数据&#xff08;包括步长&#xff08;stride&#xff09;和尺寸&#xff08;size&#xff09;&#xff09;来…...

Linux tftp命令教程:文件传输利器(附案例详解和注意事项)

Linux tftp命令介绍 tftp&#xff0c;全称为Trivial File Transfer Protocol&#xff08;简单文件传输协议&#xff09;。tftp是一个用于文件传输的客户端命令&#xff0c;用于从远程主机传输文件&#xff0c;包括一些非常简洁、通常嵌入的系统。 Linux tftp命令适用的Linux版…...

beego的模块篇 - task任务

利用该工具来定时的做一些任务&#xff0c;但是有些时候我们的进程内也希望定时的来处理一些事情&#xff0c;可以使用crontab。 1 任务计划 1.1 初始化一个任务 tk1 : task.NewTask("tk1", "0 12 * * * *", func(ctx context.Context) error { fmt.Pri…...

ThreadLocal工具类

ThreadLocal工具类 ThreadLocalUtil.java public class ThreadLocalUtil {static final ThreadLocal THREAD_LOCAL new ThreadLocal();public static <T> T get() {return (T) THREAD_LOCAL.get();}public static void set(Object value) {THREAD_LOCAL.set(value);}p…...

【c语言】扫雷(上)

先开一个test.c文件用来游戏的逻辑测试&#xff0c;在分别开一个game.c文件和game.h头文件用来实现游戏的逻辑 主要步骤&#xff1a; 游戏规则&#xff1a; 输入1&#xff08;0&#xff09;开始&#xff08;结束&#xff09;游戏&#xff0c;输入一个坐标&#xff0c;如果该坐…...

Java读取制表符文本转换为JSON

在Java开发中&#xff0c;处理各种数据格式是常见的任务。本文将介绍如何使用Java读取制表符文本文件&#xff0c;并将其转换为JSON格式&#xff0c;以便于后续的数据处理和分析。我们将使用Java中的相关库来实现这个过程&#xff0c;并提供详细的代码示例。 引言&#xff1a;…...

从C到C++:向面向对象过渡的技巧与诀窍

从C到C的过渡是一项对于程序员来说非常重要的转变。C是一种基于C语言的面向对象编程语言&#xff0c;它引入了许多新的概念和功能&#xff0c;如类、对象、继承和多态等。这些新的特性使得C在软件开发中更加灵活、可复用和易于维护。 下面是一些向面向对象过渡的技巧和诀窍&am…...

Vue3中动态组件使用

一&#xff0c;动态组件使用&#xff1a; 应用场景&#xff1a;动态绑定或切换组件 应用Vue3碎片&#xff1a; is 1.使用 a.组件A <div class"layout-base"><Button>红茶</Button> </div>a.组件B <div class"layout-base"&g…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

【51单片机】4. 模块化编程与LCD1602Debug

1. 什么是模块化编程 传统编程会将所有函数放在main.c中&#xff0c;如果使用的模块多&#xff0c;一个文件内会有很多代码&#xff0c;不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里&#xff0c;在.h文件里提供外部可调用函数声明&#xff0c;其他.c文…...

LangChain【6】之输出解析器:结构化LLM响应的关键工具

文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器&#xff1f;1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...

ZYNQ学习记录FPGA(二)Verilog语言

一、Verilog简介 1.1 HDL&#xff08;Hardware Description language&#xff09; 在解释HDL之前&#xff0c;先来了解一下数字系统设计的流程&#xff1a;逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端&#xff0c;在这个过程中就需要用到HDL&#xff0c;正文…...