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

news2024/11/15 15:25:38

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.git
	fetch = +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.git
	fetch = +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/KWebNote
   2ba12ca..c64f5b5  main       -> origin/main
 
# 执行合并,合并自己
$ git merge
Updating 2ba12ca..c64f5b5
Fast-forward
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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

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

相关文章

通过easyexcel实现数据导入功能

上一篇文章通过easyexcel导出数据到excel表格已经实现了简单的数据导出功能,这篇文章也介绍一下怎么通过easyexcel从excel表格中导入数据。 目录 一、前端代码 index.html index.js 二、后端代码 controller service SongServiceImpl 三、功能预览 四、后端…

Run Legends将健身运动游戏化,使用户保持健康并了解Web3游戏

最近,我们有机会采访Talofa Games的首席执行官兼创始人Jenny Xu,一起讨论游戏开发,Talofa Games是Run Legends这款健身游戏的开发工作室。她已经创作了超过一百款游戏,对于推动游戏的可能性并将她的创造力和叙事技巧带入她最喜爱的…

面试题-6

1.精灵图和base64的区别是什么? 精灵图:把多张小图整合到一张大图上,利用定位的一些属性把小图显示在页面上,当访问页面可以减少请求,提高加载速度 base64:传输8bit字节代码的编码方式,把原本二进制形式转为64个字符的单位,最后组成字符串 …

深入解析序列模型:全面阐释 RNN、LSTM 与 Seq2Seq 的秘密

探索序列建模的基础知识和应用。 简介 序列建模是许多领域的一个重要问题,包括自然语言处理 (NLP)、语音识别和语音合成、时间序列预测、音乐生成和「生物信息学」。所有这些任务的共同点是它们需要坚持。接下来的事情的预测是基于历史的。例如,在“哈桑…

漏洞复现--飞企互联FE业务协作平台ShowImageServlet任意文件读取

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

【C/C++】递归算法

信封 某人写了n封信和n个信封&#xff0c;如果所有的信都装错了信封。求所有的信都装错信封共有多少种不同情况 #include <iostream> using namespace std; const int N 30; int n; long f[N];int main() {scanf("%d", &n);f[1] 0, f[2] 1;for (int …

面向开发者的Android

Developerhttps://developer.android.google.cn/?hlzh-cn SDK 平台工具版本说明https://developer.android.google.cn/studio/releases/platform-tools?hlzh-cn#revisions Android SDK Platform-Tools 是 Android SDK 的一个组件。它包含与 Android 平台进行交互的工具…

【Python】给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

2、问题描述 给定一个长度为n的数列&#xff0c;将这个数列按从小到大的顺序排列。1<n<200 样例输入 5 8 3 6 4 9 样例输出 3 4 6 8 9 n int(input()) a list(map(int,input().split())) a.sort() for i in a:print(i,end ) 运行结果&#xff1a;

OceanBase 4.2.1 LTS 发版 | 一体化数据库首个长期支持版本

在刚刚结束的年度发布会上&#xff0c;OceanBase 沿着“一体化”产品战略思路&#xff0c;发布了一体化数据库的首个长期支持版本 4.2.1 LTS。作为 4.0 系列的第一个 LTS 版本&#xff0c;该版本的定位是支撑客户关键业务稳定长久运行&#xff0c;我们非常认真的打磨了这个版本…

OpenVPN Connect使用连接公网VPN服务器实现内网穿透

安装并运行OpenVPN Connect 点击AGREE 添加配置.OVPN文件 点击连接 连接成功 两个内网主机通过公网VPN穿透

pip list 和 conda list的区别

PS : 网上说conda activate了之后就可以随意pip了 可以conda和pip混用 但是安全起见还是尽量用pip 这样就算activate了&#xff0c;进入base虚拟环境了 conda与pip的区别 来源 Conda和pip通常被认为几乎完全相同。虽然这两个工具的某些功能重叠&#xff0c;但它们设计用于不…

I.MX6ULL开发笔记(一)——环境搭建、镜像烧录、网络连接

本系列为使用野火IMX6ULL开发的学习笔记&#xff0c;使用的开发板为如下&#xff1a; 具有的硬件资源有如下&#xff1a; 文章目录 一、环境搭建Win11安装WSL安装串口驱动安装串口工具安装Ubuntu与windows文件互传 二、镜像烧录修改串口终端登录前信息 三、fire-config工具配…

【Python】给定n个十六进制正整数,输出它们对应的八进制数。

3.问题描述 给定n个十六进制正整数&#xff0c;输出它们对应的八进制数。 样例输入 2 39 123ABC 样例输出 71 4435274 n int(input()) li [] # 创建列表 for i in range(n):li.append(input()) # 输入数据 for num in li:if len(num) < 100000: # 判断长度是否符…

HTTP四种请求方式,状态码,请求和响应报文

1.get请求 一般用于获取数据请求参数在URL后面请求参数的大小有限制 2.post请求 一般用于修改数据提交的数据在请求体中提交数据的大小没有限制 3.put请求 一般用于添加数据 4.delete请求 一般用于删除数据 5.一次完整的http请求过程 域名解析&#xff1a;使用DNS协议…

记录下学的性能优化

一、性能优化的指标和工具 1.1 谷歌浏览器 拿淘宝网站为例,可以看到当前网页的加载信息 这个是瀑布图,瀑布图有横向和纵向 横向是具体的加载数据,悬浮看详情列表,可以看出下载时最后一个步骤,在这之前会先排队,浏览器会对优先级进行安排,它会对高优先级的请求优先请求.然后通…

力扣刷题-二叉树-二叉树的高度与深度

二叉树最大深度 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 递归法 本题可以使用前序&#xff08;中左…

MindNode v5.0.1(思维导图软件)

思维导图软件哪个比较好呢&#xff1f;MindNode for mac一款功能简单&#xff0c;界面简洁&#xff0c;不用看教程都会用的思维导图软件。mindnode mac可随时随地记录自己的想法&#xff0c;让您从灵感入手&#xff0c;将奇思妙想铺陈在画布上&#xff0c;让一切井井有条。 Mi…

【Echarts】Echarts在不同屏幕分辨率下不同配置

目录 1、图表横坐标&#xff1a;分辨率低的情况下&#xff0c;刻度标签旋转的角度&#xff0c;在类目轴的类目标签显示不下的时候可以通过旋转防止标签之间重叠。2、图表图例&#xff1a;在 legend 文字超过6个字的时候对文字做裁剪并且开启 tooltip 参考文章&#xff1a;1、使…

C盘每次开机都会减少空间

如果C盘在没有安装任何大型软件的情况下&#xff0c;每次开机都会大幅度压缩C盘空间&#xff0c;这是由于电脑睡眠文件导致的&#xff0c;只需要一行命令即可&#xff1b; 以管理员身份打开命令提示符窗口&#xff01; 然后输入 powercfg -h off ok&#xff0c;马上就好了。…

MQ和redis的内部原理一些总结

首先&#xff0c;先知道内部原理&#xff1b;其次&#xff0c;就是查官方文档实战了。 但是如果不熟悉内部原理&#xff0c;那么仅仅只是安装官方文档&#xff0c;并不能排除跟踪问题和故障、预防风险等策略&#xff1b; 以下总结图解&#xff1a;&#xff08;mysql 8.0新增的…