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:查看远程库的代码

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言·预处理详解

1. 预定义符号 C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的 __FILE__ 进行编译的源文件 __LINE__ 文件当前的行号 __DATE__ 文件被编译的日期 __TIME__ 文件被编译的时间 __STDC__ 如果编译器遵循ANSI C,…

正则表达式..

1.字符串的合法检验 现在有一个字符串验证码 我们需要检验其的合法性 什么条件才能够使得字符串合法呢?就是6-10个字符串长度 并且以字母开头 并且其中由字母、数字、下划线构成 那么我们可以先通过自定义的方式进行检验 public class Main {public static void m…

CodeWave智能开发平台--03--目标:应用创建--10初级采购管理系统总结

摘要 本文是网易数帆CodeWave智能开发平台系列的第14篇,主要介绍了基于CodeWave平台文档的新手入门进行学习,实现一个完整的应用,本文主要完成10初级采购管理系统总结 CodeWave智能开发平台的14次接触 CodeWave参考资源 网易数帆CodeWave…

day3:基于UDP模型的简单文件下载

思维导图 tftp文件下载客户端实现 #include <head.h> #define SER_PORT 69 #define SER_IP "192.168.125.223" int link_file() {int sfdsocket(AF_INET,SOCK_DGRAM,0);if(sfd-1){perror("socket error");return -1;}return sfd; } int filedownloa…

luffy商城项目(一)

企业项目类型 # 1 面向互联网用户&#xff1a;商城类项目 -微信小程序商城 # 2 面向互联网用户&#xff1a;二手交易类的 -咸鱼 -转转 # 3 公司内部项目&#xff1a;python写的重点 -oa系统 -打卡系统工资核算系统 -第三方公司做的&#xff1a…

Vue+ElementUI技巧分享:el-table 中实现灵活的文本换行

文章目录 前言一、使用 CSS 选择器实现换行二、使用 HTML 标签和 CSS 类实现换行三、利用数组实现每项数据单独一行四、动态生成带换行文本的表格五、完整代码演示总结 前言 Element UI 是 Vue.js 的一个流行组件库&#xff0c;广泛应用于构建企业级前端界面。在数据密集型的应…

Go语言基础快速上手

1、Go语言关键字 2、Go数据类型 3、特殊的操作 3.1、iota关键字 Go中没有明确意思上的enum&#xff08;枚举&#xff09;定义&#xff0c;不过可以借用iota标识符实现一组自增常亮值来实现枚举类型。 const (a iota // 0b // 1c 100 // 100d // 100 (与上一…

图像比特级置乱加密的安全性

一、概述 Liu等人[1] 提出一种冗余空间转移&#xff08;简称&#xff1a;RST&#xff09;加密算法。RST加密中&#xff0c;用户首先将图像分解为8个位平面&#xff0c;根据位平面置乱秘钥置乱图像的位平面以改变图像的像素值。接着&#xff0c;将位平面置乱图像分块&#xff0…

【第七在线】利用大数据与AI,智能商品计划的未来已来

随着科技的快速发展&#xff0c;大数据和人工智能(AI)已经成为各行各业变革的重要驱动力。在服装行业&#xff0c;这两大技术的结合正在深刻改变着传统的商品计划方式&#xff0c;引领着智能商品计划的未来。 一、大数据与AI在智能商品计划中的角色 大数据为智能商品计划提供了…

go语言(十)---- 面向对象封装

面向对象的封装 package mainimport "fmt"type Hero struct {Name stringAd intLevel int }func (this Hero) Show(){fmt.Println("Name ", this.Name)fmt.Println("Ad ", this.Ad)fmt.Println("Level ", this.Level)}func (thi…

数据结构——Java实现栈和队列

一、栈 Stack 1.特点 &#xff08;1&#xff09;栈是一种线性数据结构 &#xff08;2&#xff09;规定只能从栈顶添加元素&#xff0c;从栈顶取出元素 &#xff08;3&#xff09;是一种先进后出的数据结构&#xff08;Last First Out&#xff09;LIFO 2.具体实现 Java中可…

Python 并发编程

文章目录 Python 并发编程1. 基本概念1.1 CPU 密集型计算1.2 IO 密集型计算1.3 多线程&#xff0c;多进程&#xff0c;多协程的对比1.4 怎么根据任务选择对应的技术&#xff1f; 2. 全局解释器锁 GIL2.1 Python 速度慢的两大原因2.2 GIL 是什么?2.3 为什么有 GIL ?2.4 怎样规…

蓝桥杯备战 每日一题 (2)

今天的题目是回忆迷宫 这个题目我们来熟悉一下 弗洛伊德算法 的代码模板 弗洛伊德算法用来处理最短路径问题 弗洛伊德算法&#xff08;Floyd’s algorithm&#xff09;用于解决图中所有节点对之间的最短路径问题。算法的基本思路是通过逐步迭代更新节点对之间的最短路径长度&a…

力扣日记1.19-【二叉树篇】538. 把二叉搜索树转换为累加树

力扣日记&#xff1a;【二叉树篇】538. 把二叉搜索树转换为累加树 日期&#xff1a;2023.1.19 参考&#xff1a;代码随想录、力扣 ps&#xff1a;因为准备组会汇报又搁置了好久&#xff08;其实就是懒逃避T^T)&#xff0c;但这是最后一道二叉树啦啊啊啊&#xff01;&#xff01…

串口通信自用

定义 串口&#xff08;Serial Port&#xff09;是一种用于数据通信的接口标准&#xff0c;它通过物理线路将数据以逐位的方式传输。串口通信可以在计算机和外部设备之间进行数据交换&#xff0c;常用于连接调制解调器、打印机、传感器、嵌入式系统等设备。常用的通信协议协议有…

day02:列表、表格、表单

01-列表 作用&#xff1a;布局内容排列整齐的区域。 列表分类&#xff1a;无序列表、有序列表、定义列表。 无序列表 作用&#xff1a;布局排列整齐的不需要规定顺序的区域。 标签&#xff1a;ul 嵌套 li&#xff0c;ul 是无序列表&#xff0c;li 是列表条目。 <ul>…

【信号与系统】【北京航空航天大学】实验四、幅频、相频响应和傅里叶变换

一、实验目的 1、 掌握利用MATLAB计算系统幅频、相频响应的方法&#xff1b; 2、 掌握使用MATLAB进行傅里叶变换的方法&#xff1b; 3、 掌握使用MATLAB验证傅里叶变换的性质的方法。 二、实验内容 1、 MATLAB代码&#xff1a; >> clear all; >> a [1 3 2]; …

rabbitmq的介绍、使用、案例

1.介绍 rabbitmq简单来说就是个消息中间件&#xff0c;可以让不同的应用程序之间进行异步的通信&#xff0c;通过消息传递来实现解耦和分布式处理。 消息队列&#xff1a;允许将消息发到队列&#xff0c;然后进行取出、处理等操作&#xff0c;使得生产者和消费者之间能够解耦&…

C++初阶--自我实现vector

实现模板 #include<assert.h> #include<string.h> #include<iostream> #include<list> using namespace std; namespace fnc {template<class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;//构造函数vector(){…

五、模 板

1 泛型编程 以往我们想实现一个通用的交换函数&#xff0c;可能是通过下面的方式来实现的&#xff1a; void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, double& right) {double temp left;left ri…