代码托管(二)git(1)介绍

一、git相关

git github gitlub

二、gitlub签名认证

使用ssh克隆代码,使用gpg签名提交代码。

1、ssh签名

一对公钥和密钥,公钥复制到gitlub上。步骤如下

1.1、先在本地生成密钥和公钥

(1)配置用户名和邮箱

git config --global user.name "moxun"
git config --global user.email "xxx@xx.com"

(2) 生成公私钥

两种加密方式:ed25519(推荐)和rsa

ssh-keygen -t ed25519 -C "xxx@xx.com"
ssh-keygen -t rsa -C "xxx@xx.com"

按三次回车enter键即可生成,这里一般不需要添加名称和密码 

(3)打开文件查看,路径为C:\Users\用户名\.ssh

1.2、将公钥复制到gitlub上

上面第一步会生成两个加密文件,如我使用的是ed25519,则id_ed25519文件是私钥,id_ed25519.pub是公钥,打开,全选复制到gitlub上即可。

1.3、本地设置git全局生效
git config --global gpg.format ssh
#git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global user.signingkey ~/.ssh/你的文件名称git commit -S -m "My commit msg"
2、gpg签名

配置git提交为gpg签名,提交代码后gitlub上将显示verifiled。

2.1、下载gpg

GnuPG - Download

这是个可视化工具,下载后一步步安装即可(建议安装到默认目录即可)。

cmd命令行输入gpg --version,执行成功则说明安装成功。 

2.2、生成密钥

cmd命令行(或者idea终端或者git bash命令行)输入:

gpg --full-gen-key

弹出框一步步输入即可:

(1)

 $ gpg --full-gen-key
gpg (GnuPG) 2.4.4-unknown; Copyright (C) 2024 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.Please select what kind of key you want:(1) RSA and RSA(2) DSA and Elgamal(3) DSA (sign only)(4) RSA (sign only)(9) ECC (sign and encrypt) *default*(10) ECC (sign only)(14) Existing key from card
Your selection?

选择1

(2)

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072)

输入4096

(3)

Please specify how long the key should be valid.0 = key does not expire<n>  = key expires in n days<n>w = key expires in n weeks<n>m = key expires in n months<n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

(4)输入名称和邮箱

(5)

GnuPG needs to construct a user ID to identify your key.Real name: Zoomie Developer
Email address: zoomie.developer@zoom.us
You selected this USER-ID:"Zoomie <zoomie.developer@zoom.us>"Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? 

输入O确认。弹框输入密码,可输入也可以不输入。完毕

2.3、查询刚才生成的密钥

(1)方法1

gpg --list-secret-keys --keyid-format LONG <EMAIL>
#将 <EMAIL> 替换为生成密钥时使用的电子邮件地址:如:gpg --list-secret-keys --keyid-format LONG wtyy@qq.com

在输出中,/后面的即为私钥,如我输出如下,则私钥为5FEC960A78DF29F6,

sec   rsa4096/5FEC960A78DF29F6 2024-04-19 [SC]2C8974FE36C8386038AD3F4B5FEC960A78DF29F6
uid                 [ultimate] tina.zhang <tina.zhang@zoom.us>
ssb   rsa4096/371D4A944D473731 2024-04-19 [E]

(2)方法2 

打开第一步下载的gpgwin可视化工具也可以查看到

2.4、使用密钥生成公钥
gpg --armor --export 你的密钥

复制输出的公钥,包括 BEGIN PGP PUBLIC KEY BLOCKEND PGP PUBLIC KEY BLOCK 行,粘贴到gitlub的gpg设置中即可。

2.5、本地设置git全局生效
git config --global commit.gpgsign true
2.6、idea配置gpg

settings-->git-->configure GPG key,点击会自动弹出来密钥,确认即可。

2.7、git全局配置gpg路径

往往还需要配置git的gpg路径:

git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
#具体路径参考第一步安装的路径

否则commit或者push会报错:

gpg: skipped "88F1EA372F568EBA": No secret key
gpg: signing failed: No secret key
error: gpg failed to sign the data
fatal: failed to write commit object

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

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

相关文章

B3756 幸运数字

题目描述: 如果⼀个正整数 &#x1d45b;n 在五进制、七进制、九进制的表⽰下都没有数字 00&#xff0c;我们就称 &#x1d45b;n 是幸运数字。例如&#xff1a; (987)10(12422)5(2610)7(1316)9&#xff0c;因此 &#x1d45b;987不是幸运数字。 (988)10(12423)5(2611)7(1317…

深度学习基础——卷积神经网络的基础模块

深度学习基础——卷积神经网络的基础模块 卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;是深度学习中一种非常重要的神经网络结构&#xff0c;它在图像识别、图像分类、目标检测等领域取得了巨大成功。本文将介绍卷积神经网络的几个基础…

MYSQL之增删改查(中)

前言&#xff1a; 以下是MySQL最基本的增删改查语句&#xff0c;很多IT工作者都必须要会的命令&#xff0c;也 是IT行业面试最常考的知识点&#xff0c;由于是入门级基础命令&#xff0c;所有所有操作都建立在单表 上&#xff0c;未涉及多表操作。 4、“查”——之单表查询 My…

Gamba:将高斯溅射与Mamba结合用于单视图3D重建

Gamba: Marry Gaussian Splatting with Mamba for Single-View 3D Reconstruction Gamba&#xff1a;将高斯溅射与Mamba结合用于单视图3D重建 Qiuhong Shen11  Xuanyu Yi31 Zike Wu31  Pan Zhou2,42 Hanwang Zhang3,5 沈秋红 1 易轩宇 3 吴子可 3 潘周 2,4 2 张汉旺 3,5Shu…

C++11 新特性:多线程支持 - std::recursive_timed_mutex

std::recursive_timed_mutex允许同一线程多次获取锁&#xff0c;并提供了超时功能。 这种锁特别适合用在递归函数中&#xff0c;或者当一个操作可能在同一线程内多次尝试获取同一锁时使用。 与std::timed_mutex一样&#xff0c;std::recursive_timed_mutex也提供了try_lock_f…

C语言开源库iniparser解析ini文件

1 ini文件介绍 INI&#xff08;Initialization File&#xff09;文件是一种简单直观的数据存储格式&#xff0c;常用于配置应用程序的初始化设置。这种文件通常包含若干个节&#xff08;section&#xff09;和键值对&#xff08;key-value pairs&#xff09;。INI文件的每一部…

Spring AOP(面向切面编程)

1.Spring AOP 简介 1.1 AOP概述 AOP 为 Aspect Oriented Programming 的缩写&#xff0c;意思为面向切面编程, 是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP 是 OOP 的延续&#xff0c;是Spring框架中的一个重要内容&#xff0c;是函数式编程的一…

FPGA Quartus IP核 打开使用

两种Quartus版本下的IP核&#xff0c;从使用者的角度来看仅仅是配置界面不同&#xff0c;在参数设置和使用方法上基本一致。本文以“MegaWizard Plug-In Manager”中的FIR Compiler IP核使用为例。 Quartus的FIR IP核属于收费IP&#xff0c;如果是个人学习使用需要对IP核单独破…

linux设备树-of_parse_phandle_with_args

1.设备树实例 interrupt-controller1 { compatible "vendor,gic"; #interrupt-cells <2>; interrupt-controller; reg <0x01 0x1000>; }; deviceA { compatible "vendor,device-a"; reg <0x02 0x100>; interrupts <&interr…

C++ 深入理解 继承

本篇文章将谈谈一下几个问题&#xff1a; 1.基类和派生类对象赋值转换 2.继承中的作用域 3.派生类的默认成员函数 4.复杂的菱形继承及菱形虚拟继承 5.其他 1.基类和派生类对象赋值转换 1.派生类对象 可以赋值给 基类的对象 / 基类的指针 / 基类的引用。这里有个形象的说法叫切…

【电控笔记2.5】位置闭环回路设计

总结 List item 位置控制器 加入前馈 总结

SpringBoot基于JavaWeb的菜鸟驿站快递管理系统ssm

前端&#xff1a;vue.jsElementUI 编程语言: java 框架&#xff1a; ssm/springboot 详细技术&#xff1a;springboot springbootvueMYSQLMAVEN 数据库: mysql5.7 数据库工具&#xff1a;Navicat/SQLyog都可以 ide工具&#xff1a;IDEA 或者eclipse 对菜鸟驿站快递管理系统设计…

会议文字记录工具【钉钉闪记】

当开会时&#xff0c;需要文字记录会议内容&#xff0c;但是打字又慢&#xff0c;可以使用钉钉闪记。 钉钉工作台直接搜索-钉钉闪记

011 springboot整合mybatis-plus 首页加载热商品food评分前8的食物

文章目录 ConfigRegistCenter.javaMybatisplusConfig.javaRedisConfig.javaFoodController.javaFood.javaJwtInterceptor.javaFoodMapper.javaIFoodService.javaFoodServiceImpl.javaJwtUtil.javaServerResult.javaServletInitializer.javaSpringbootLoginApplication.javafood…

ADSP-21479的开发详解九(CCES开发详解)

硬件准备 ADSP-21479EVB开发板&#xff1a; 产品链接&#xff1a;https://item.taobao.com/item.htm?id555500952801&spma1z10.5-c.w4002-5192690539.11.151441a3Z16RLU AD-HP530ICE仿真器&#xff1a; 产品链接&#xff1a;https://item.taobao.com/item.htm?id38007…

js的map函数

在JavaScript中&#xff0c;map() 是一个数组方法&#xff0c;它创建一个新数组&#xff0c;其结果是该数组中的每个元素都调用一个提供的函数后的返回值。这个方法不会改变原数组。 map() 方法的基本语法如下&#xff1a; javascriptarray.map(function(currentValue, index,…

【PythonCode】力扣Leetcode16~20题Python版

【PythonCode】力扣Leetcode16~20题Python版 前言 力扣Leetcode是一个集学习、刷题、竞赛等功能于一体的编程学习平台&#xff0c;很多计算机相关专业的学生、编程自学者、IT从业者在上面学习和刷题。 在Leetcode上刷题&#xff0c;可以选择各种主流的编程语言&#xff0c;如C…

React【Day4下+5】

环境搭建 使用CRA创建项目&#xff0c;并安装必要依赖&#xff0c;包括下列基础包 Redux状态管理 - reduxjs/toolkit 、 react-redux路由 - react-router-dom时间处理 - dayjsclass类名处理 - classnames移动端组件库 - antd-mobile请求插件 - axios 配置别名路径 1. 背景知识…

【Linux 进程间通信】管道

文章目录 1.System V 标准介绍2.进程间通信的方式&#xff1f;3.管道&#xff08;匿名管道&#xff09; 1.System V 标准介绍 ①&#x1f34e; System V 实际上就是一个标准&#xff08;“ 行业领头羊制定出来的专利 " &#xff09; 2.进程间通信的方式&#xff1f; …

java中常用的6条设计模式及其设计原则

在Java中&#xff0c;设计模式是用于解决特定上下文中常见问题的最佳实践解决方案&#xff0c;广泛用于编写易于维护、扩展和理解的代码。这里我将介绍六种常用的设计模式及其对应的设计原则&#xff1a; 1. 单例模式 (Singleton) 设计原则: 确保一个类只有一个实例&#xff…