【DevOps】Git 图文详解(五):远程仓库

Git 图文详解(五):远程仓库

  • 1.远程用户登录
    • 1.1 🔑 远程用户登录:HTTS
    • 1.2 🔑 远程用户登录:SSH
  • 2.远程仓库指令 🔥
  • 3.推送 push / 拉取 pull
  • 4.fetch 与 pull 有什么不同 ?

Git 作为分布式的版本管理系统,每个终端都有自己的 Git 仓库。但团队协作还需一个中间仓库,作为中心,同步各个仓库。于是服务端(远程)仓库就来承担这个职责,服务端不仅有仓库,还配套相关管理功能。

在这里插入图片描述
可以用公共的 Git 服务器,也可以自己搭建一套 Git 服务器。

  • 公共 Git 服务器,如 GitHub、GitLab、码云 Gitee、腾讯 Coding 等。
  • 搭建私有 Git 服务器,如开源的 GitLab、Gitea 等。

1.远程用户登录

Git 服务器一般提供两种登录验证方式:

  • HTTS:基于 HTTPS 连接,使用用户名、密码身份验证。
    • 每次都要输入用户名、密码,当然可以记住。
    • 地址形式:https://github.com/kwonganding/KWebNote.git
  • SSL:采用 SSL 通信协议,基于公私钥进行身份验证,所以需要额外配置公私秘钥。
    • 不用每次输入用户名、密码,比较推荐的方法。
    • 地址形式:git@github.com:kwonganding/KWebNote.git

在这里插入图片描述

#查看当前远程仓库使用的哪种协议连接:
$ git remote -v
origin  git@github.com:kwonganding/KWebNote.git (fetch)
origin  https://github.com/kwonganding/KWebNote.git (push)# 更改为https地址,即可切换连接模式。还需要禁用掉SSL, 才能正常使用https管理git
git config --global http.sslVerify false

1.1 🔑 远程用户登录:HTTS

基于 HTTPS 的地址连接远程仓库,GitHub 的共有仓库克隆、拉取(pull)是不需要验证的。

在这里插入图片描述

$ git clone 'https://github.com/kwonganding/KWebNote.git'
Cloning into 'KWebNote'...# 仓库配置文件“.git/config”
[remote "origin"]url = https://github.com/kwonganding/KWebNote.gitfetch = +refs/heads/*:refs/remotes/origin/*pushurl = https://github.com/kwonganding/KWebNote.git

推送(push)代码的时候就会提示输入用户名、密码了,否则无法提交。记住用户密码的方式有两种:

🔸 URL 地址配置:在原本 URL 地址上加上用户名、密码,https:// 后加 用户名:密码@

# 直接修改仓库的配置文件“.git/config”
[remote "origin"]url = https://用户名:密码@github.com/kwonganding/KWebNote.gitfetch = +refs/heads/*:refs/remotes/origin/*pushurl = https://github.com/kwonganding/KWebNote.git

🔸 本地缓存:会创建一个缓存文件 .git-credentials,存储输入的用户名、密码。

# 参数“--global”全局有效,也可以针对仓库设置“--local”
# store 表示永久存储,也可以设置临时存储
git config --global credential.helper store# 存储内容如下,打开文件“仓库\.git\.git-credentials”
https://kwonganding:[加密内容付费可见]@github.com

1.2 🔑 远程用户登录:SSH

在这里插入图片描述

SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务,多用来进行远程登录、数据传输。SSH 通过公钥、私钥非对称加密数据,所以 SSH 需要生成一个公私钥对,公钥放服务器上,私有自己留着进行认证。

在这里插入图片描述
① 生成公私钥:通过 Git 指令 ssh-keygen -t rsa 生成公私钥,一路回车即可完成。生成在 C:\Users\用户名.ssh 目录下,文件 id_rsa.pub 的内容就是公钥。

在这里插入图片描述

② 配置公钥:打开 id_rsa.pub 文件,复制内容。GitHub 上,打开 SettingSSH and GPG keysSSH keys ➤ 按钮 New SSH key,标题(Title)随意,秘钥内容粘贴进去即可。

在这里插入图片描述

SSH 配置完后,可用 ssh -T git@github.com 来检测是否连接成功。

$ ssh -T git@github.com
Hi kwonganding! You've successfully authenticated, but GitHub does not provide shell access.

2.远程仓库指令 🔥

指令
描述
git clone [git地址]从远程仓库克隆到本地(当前目录)
git remote -v查看所有远程仓库,不带参数 -v 只显示名称
git remote show [remote]显示某个远程仓库的信息
git remote add [name] [url]增加一个新的远程仓库,并命名
git remote rename [old] [new]修改远程仓库名称
git pull [remote] [branch]取回远程仓库的变化,并与本地版本合并
git pull同上,针对当前分支
git fetch [remote]获取远程仓库的所有变动到本地仓库,不会自动合并!需要手动合并
git push推送当前分支到远程仓库
git push [remote] [branch]推送本地当前分支到远程仓库的指定分支
git push [remote] --force / -f强行推送当前分支到远程仓库,即使有冲突。⚠️很危险!
git push [remote] --all推送所有分支到远程仓库
git push –u参数 –u 表示与远程分支建立关联,第一次执行的时候用,后面就不需要了
git remote rm [remote-name]删除远程仓库
git pull --rebase使用 rebase 的模式进行合并

3.推送 push / 拉取 pull

git pushgit pull 是团队协作中最常用的指令,用于同步本地、服务端的更新,与他人协作。

🔸 推送(push):推送本地仓库到远程仓库。

  • 如果推送的更新与服务端存在冲突,则会被拒绝,push 失败。一般是有其他人推送了代码,导致文件冲突,可以先 pull 代码,在本地进行合并,然后再 push

🔸 拉取(pull):从服务端(远程)仓库更新到本地仓库。

  • git pull:拉取服务端的最新提交到本地,并与本地合并,合并过程同分支的合并。
  • git fetch:拉取服务端的最新提交到本地,不会自动合并,也不会更新工作区。

在这里插入图片描述

4.fetch 与 pull 有什么不同 ?

两者都是从服务端获取更新,主要区别是 fetch 不会自动合并,不会影响当前工作区内容。

git pull = git fetch + git merge

  • 如下面图中,git fetch 只获取了更新,并未影响 masterHEAD 的位置。
  • 要更新 masterHEAD 的位置需要手动执行 git merge 合并。

在这里插入图片描述

# fetch只更新版本库
$ git fetch
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 663 bytes | 44.00 KiB/s, done.
From github.com:kwonganding/KWebNote2ba12ca..c64f5b5  main       -> origin/main# 执行合并,合并自己
$ git merge
Updating 2ba12ca..c64f5b5
Fast-forwardREADME.md | 2 +-1 file changed, 1 insertion(+), 1 deletion(-)

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

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

相关文章

【汇编】“转移”综述、操作符offset、jmp指令

文章目录 前言一、转移综述1.1 :背景:1.2 转移指令1.3 转移指令的分类按转移行为根据指令对IP修改的范围不同 二、操作符offset2.1 offset操作符是干什么的?标号是什么? 2.2 nop是什么? 三、jmp指令3.1 jmp指令的功能3.2 jmp指令&…

【目标测距】雷达投影测距

文章目录 前言一、读取点云二、点云投影图片三、读取检测信息四、点云投影测距五、学习交流 前言 雷达点云投影相机。图片目标检测,通过检测框约束等等对目标赋予距离。计算消耗较大,适合离线验证操作。在线操作可以只投影雷达检测框。 一、读取点云 py…

校园报修抢修小程序系统开发 物业小区报修预约上门维修工单系统

开发的功能模块有: 1.报修工单提交:学生、教职员工等可以使用小程序提交报修请求。这通常包括选择报修的问题类型(如水漏、电器故障、照明问题等),地点,报修联系人,联系电话等,并提供…

【5k字长文 | Vue学习笔记】#1 认识Vue对象和基础语法

Vue是一个非常流行的渐进式JavaScript框架,渐进式指的是自底向上,从小组件逐渐向上构成整个项目,渐进式还可以理解为:用什么就拿什么,每个组件只做自己的事,尽可能解耦合。 本节我们将学习简单的Vue实例&a…

Thales安全解决方案:国家网络安全的关键

随着信息技术的飞速发展,网络安全问题日益凸显。在这个背景下,Thales安全解决方案正成为提高国家网络安全的关键。本文将探讨Thales安全解决方案如何为国家网络安全保驾护航。 一、Thales安全解决方案概述 Thales安全解决方案是一种全方位的网络安全防护…

upload-labs关卡11(双写后缀名绕过)通关思路

文章目录 前言一、回顾前几关知识点二、靶场第十一关通关思路1、看源代码2、bp抓包双写后缀名绕过3、检查文件是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的…

细思极恐!5秒钟克隆你的声音

Mocking Bird 是开发者 babysor 开源的比较火的 AI 拟声开源项目,目前在 GitHub 已经获得了 32K 的 Star,它能在 5 秒内克隆你的声音并生成任意语音内容,支持中文普通话。 01 功能特性 支持中文普通话拟声,并且在多个中文数据集…

小程序授权获取头像

wxml <view class"header"><text>头像</text><button class"butt" plain"true" open-type"chooseAvatar" bind:chooseavatar"chooseAvatar"><image src"{{HeadUrl}}" mode"&quo…

初刷leetcode题目(5)——数据结构与算法

&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️…

工具及方法 - 多邻国: Duolingo

网站&#xff1a;Duolingo 有iOS和Android应用&#xff0c;在App Store和Google Play上都能下载。也可以使用网页版。我就在iOS上安装了付费版&#xff0c;为了小朋友学习英语&#xff0c;一年的费用&#xffe5;588。 目前学习中的课程是英语、日语和粤语。英语是小学课程&a…

GPU Microarch 学习笔记【3】Tensor Core

目录 1. 指令与架构 2. Load 3. 计算MMA 4. Set, Step 与thread group 5. OCTET 6. Tensor Core微架构 7. Final Nvidia自从Volta/Turing&#xff08;2018&#xff09;架构开始&#xff0c;在stream multi processor中加入了tensor core&#xff0c;用于加速矩阵计算。如…

代码随想录算法训练营Day36 —— 435. 无重叠区间、763.划分字母区间、56. 合并区间

435. 无重叠区间 思路&#xff1a; 按照左边排序&#xff0c;按照452引爆气球的思路即可&#xff0c;统计重叠区间个数就是最小删除个数&#xff0c; 直接改点就好。 代码&#xff1a; //手搓 class Solution { private:static bool cmp(const vector<int>& a, c…

用Java实现简单的俄罗斯方块

一、创建新项目 1.首先新建一个项目&#xff0c;并命名为俄罗斯方块。 2.其次新建一个类&#xff0c;命名为Main&#xff0c;或其他的。 二、运行代码package 俄罗斯方块; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java…

贝锐蒲公英路由器X4C如何远程访问NAS?

在目前网盘前路坎坷的情况下&#xff0c;私人云盘已然是一种新的趋势&#xff01;那自己打造一个私有云盘&#xff0c;是否需要高成本或是高门槛呢&#xff1f;其实并不用&#xff01;蒲公英针对个人玩家打造了全方位的私有云解决方案。 &#xff08;1&#xff09;入门级玩家只…

计算机毕业论文内容参考|基于深度学习的交通标识智能识别系统的设计与维护

文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势3课题内容相关技术与方法介绍系统分析总结与展望导文 基于深度学习的交通标识智能识别系统是一种利用深度学习模型对交通标识进行识别和解析的系统。它可以帮助驾驶员更好地理解交通规则和安全提示,同时也可以提高道路交通…

全志H616开发版

开发板介绍&#xff1a; 二、开发板刷机 SDFormatter TF卡的格式化工具、Win32Diskimager 刷机工具 刷机镜像为&#xff1a;Orangepizero2_2.2.0_ubuntu_bionic_desktop_linux4.9.170.img 使用MobaXterm_Personal_20.3连接使用 网络配置&#xff1a;nmcli dev wifi 命令接入网…

策略模式在数据接收和发送场景的应用(升级版)

1.背景 在数据接收和发送场景打算使用了 if else 进行判断&#xff1a; if("A".equals(system)){ASystem.sync("向A同步数据"); } if("B".equals(system)){BSystem.sync("向B同步数据"); } ... 非常麻烦&#xff0c;需求多了很臃肿&…

C#,数值计算——插值和外推,分段线性插值(Linear_interp)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 分段线性插值 /// Piecewise linear interpolation object. /// Construct with x and y vectors, then call interp for interpolated values. /// </summary> …

Windows 安装 Docker

目录 前言安装 WSL2WSL2 简介系统要求安装步骤 安装 Docker Desktop下载安装验证 安装 Docker Compose结语开源项目 前言 下图展示了在 Windows 系统上安装 Docker&#xff0c;并利用Docker Compose一键搭建 youlai-mall 微服务商城所需的环境。本篇将先介绍 Windows 上如何安…

【Linux】指令详解(二)

目录 1. 前言2. 重新认识指令2.1 指令的本质2.1.1 which2.1.2 alias 3. 常见指令3.1 whoami3.2 cd3.2.1 cd -3.2.2 cd ~ 3.3 touch3.3.1 文件创建时间 3.4 stat3.5 mkdir3.5.1 创建一个目录3.5.2 创建路径 3.6 tree3.7 rm3.7.1 rm -f3.7.2 rm -r 3.8 man3.9 cp3.10 mv 1. 前言 …