如何配置git,使其支持多用户

news/2024/4/29 14:24:55/文章来源:https://blog.csdn.net/qq_31442743/article/details/129121704

如何配置git,使其支持多用户?

在多数时候, 我们使用git进行操作时,只需要在本地配置一个用户的ssh key,就可以完成基本的pull/push操作。如果现在我有两个github的账号,并需要在一台电脑中操作其中的repo,有没有什么较好的办法呢?

下面就将详解其配置过程。

清除全局用户配置

该步骤是必须的, 在本地设置多账户之后, 就不再使用全局的用户名和email了, 因此需要先unset掉global的用户名和邮箱。

git config --global --unset user.name
git config --global --unset user.email

生成每个用户的密钥对

我们这里以创建test1用户和test2用户为例, 演示操作过程。

这里, 我们首先查看.ssh目录,由于之前已经配置过test1用户, 因此该目录下已经有了test1用户的ssh公钥和私钥。

$ ls  ~/.ssh/
id_rsa   
id_rsa.pub

接下来我们生成test2用户的ssh key:

ssh-keygen -t rsa -C "test2@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa):(这里填写一个自定义的名字)
~/.ssh/id_rsa_second
Enter passphrase(empty for on passphrase):

这样就在.ssh目录下生成了对应的ssh密钥。其中.pub文件就是私钥。

$ ls  ~/.ssh/
id_rsa   id_rsa_second 
id_rsa.pub   id_rsa_second.pub

在github Web console中添加SSH Keys

将上一步骤中生成的id_rsa.pub 和 id_rsa_second.pub文件中的内容,分别加入对应账户的github的SSH Keys中, 如下图所示:

git ssh key

管理密钥

管理密钥的目的是让git知道一个repo去什么地方去查找它的ssh key。

该步骤需要在~/.ssh目录下创建一个config文件,文件格式如下所示:

Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsaHost user2.github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_second

该文件各字段的含义如下所示:

Host : 主机别名

HostName: 服务器真实地址

IdentityFile: 私钥文件路径

User : 用户名,这里User均填写git

下面测试我们配置的项目是否正确。

测试命令格式为 ssh -T user@Host

ssh -T git@github.com
ssh -T git@user2.github.com

如果输出了下面的语句,代表你的配置已经成功了。

Hi test2! You've successfully authenticated, but GitHub does not provide shell access.

克隆仓库进行push

在配置完毕之后, 当我们使用git clone 命令时需要做一些修改。

在不需要配置多账户时, 我们clone一个仓库通常使用下面的命令:

git clone git@github.com:your_account/your_proj.git

而如果你仍然使用这样的格式clone时,在push时会失败。

我们需要修改clone命令为如下格式:

git clone git@user2.github.com:your_account/your_proj.git

为什么要这样修改呢?

我们看下面这张图:

git ssh key

在我们修改了Host之后,git会通过该host去~/.ssh/config文件中寻找对应的私钥文件地址,回忆我们刚刚在config配置了test2的Host为user2.github.com,因此当git clone的地址修改之后, git就可以顺利地找到该repo所需要的ssh key。如果仍然用git clone git@github.com:your_account/your_proj.git那么git将会使用~/.ssh/config中配置的一个ssh key, 这样会导致push时失败。

最后需要注意的是, 如果有配置多用户这个需求时, 那么在执行git commit时, 设置用户名和邮箱不能使用全局账户。

应使用:

git config user.name "You Name"
git config user.email name@example.com

而不能使用

git config --global user.name "You Name"
git config --global user.email name@example.com

总结

使用git配置多用户,主要需要注意以下几点:

  • 需要在本地分别生成各用户的ssh密钥
  • 需要为所有的用户配置密钥路径文件config
  • git clone时地址需要修改, 如果是已经clone下来的仓库, 需要修改remote地址
  • 不能使用global配置用户名和邮箱

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

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

相关文章

java网络编程-nio学习:阻塞和非阻塞

一、阻塞 阻塞模式下,相关方法都会导致线程暂停 ServerSocketChannel.accept 会在没有连接建立时让线程暂停 SocketChannel.read 会在没有数据可读时让线程暂停 阻塞的表现其实就是线程暂停了,暂停期间不会占用 cpu,但线程相当于闲置 单线…

PyQt5数据库开发1 4.3 QSqlTableModel 之 相关槽函数的实现(多图长文详解)

目录 一、打开数据库表 1. 写打开数据库的槽函数 2. 运行后发现数据库可以打开了 3. ODBC配通了,数据库还是打不开 4. 写在tableView上显示数据库表的函数 5. 运行后发现表可以显示了 6. 代码分析 7. 添加列名称 8. 根据内容调整列宽 9. 备注:…

三、NetworkX工具包实战3——特征工程【CS224W】(Datawhale组队学习)

开源内容:https://github.com/TommyZihao/zihao_course/tree/main/CS224W 子豪兄B 站视频:https://space.bilibili.com/1900783/channel/collectiondetail?sid915098 斯坦福官方课程主页:https://web.stanford.edu/class/cs224w NetworkX…

数据库事务AICD以及隔离级别

目录一.事务的ACID二.隔离级别三.并发事务中的问题1.脏写2.脏读3.不可重复读4.幻读四.MVCC机制五.读锁与写锁六.大事务的影响七.事务优化一.事务的ACID 原子性(Atomicity):一个事务中的所有操作,要么全部成功,要么失败全部回滚,不…

linux集群技术(一)--LVS(负载均衡)(一)

集群功能分类负载均衡LVS概述LVS工作模式轮训算法 1.集群功能分类 1.1 LB (一)简介 LB:Load Balancing,负载均衡(增加处理能力),有一定高可用能力,但不是高可用集群,是以提高服务的…

「文档数据库之争」MongoDB和CouchDB的比较

MongoDB和CouchDB都是基于文档的NoSQL数据库类型。文档数据库又称mdocument store,通常用于存储半结构化数据的文档格式及其详细描述。它允许创建和更新程序,而不需要引用主模式。移动应用程序中的内容管理和数据处理是可以应用文档存储的两个字段。Mong…

SSH 服务支持弱加密算法

漏洞扫描有SSH 服务支持弱加密算法,解决方案有两个: 方案一:修改 SSH 配置文件,添加加密算法: vi /etc/ssh/sshd_config 最后添加一下内容(去掉 arcfour、arcfour128、arcfour256 等弱加密算法)…

游戏服务器算法-AOI基本介绍

一、直接比较所有对象 最直观也是最效率最低的一种方法。当一个事件发生,我们需要获得AOI范围以内的物体时,直接遍历游戏中所有的对象,并且进行坐标判断,如果小于或者等于AOI的范围,则为需要的游戏对象。 这种方法实…

智慧校园信息化管理平台技术方案

1.2总体架构设计 智慧校园平台是以学校现有网络为基础,以服务于全校师生的教学、科研、生活为目的,建立在学校数据中心平台之上,涵盖了学校的学校管理、学生管理、教学管理、班级管理、家校共育、教务管理等全方位的管理信息平台与信息服务平…

积分球原理及积分球类型介绍

标题积分球标准型积分球LED积分球均匀光源便携式高亮度积分球均匀光源微光积分球均匀光源积分球均匀光源iSphere高光谱响应光学积分球其他分类积分球 积分球原理:由于球体内整涂有白色漫反射材料的空腔球体,球壁上开有采样口,当待测样品光源进入积分球的…

公司缺人面了8个测试员,他们都有一个相同的缺点.....

年后公司缺人,面了不少测试,结果竟然没有一个合适的。 一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在10-20k,面试的人很多,但平均水平很让人失望。 看简历很多都是3年工作经验,但面…

约束优化:约束优化的三种序列无约束优化方法(罚函数法)

文章目录约束优化:约束优化的三种序列无约束优化方法(罚函数法)外点罚函数法L2-罚函数法:非精确算法对于等式约束对于不等式约束L1-罚函数法:精确算法内点罚函数法:障碍函数法参考文献约束优化:…

Docker实用命令手册

Docker实用命令手册 大家好,我是比特桃。本文汇总了超实用的Docker命令手册,本文适用于有一定Docker基础的同学。如果你对Docker不了解,可能无法直接使用这些命令。但别担心,Docker本身是一个工具,如果只是用起来其实…

算法专题训练营

动归算法专题 1.拆分词句 是不是,在不在都是可以用动归解决的 状态转义方程不一定都是等式,也有可能是条件 2.三角形 动归算法也不是一定要借助新开空间,也是可以用自己原来的空间 3.背包问题 4.分割回文串-ii 5.不同的子序列 贪心算法专题 只管一步的最优结果, 1.分割平衡…

高并发系统设计之负载均衡

本文已收录至Github,推荐阅读 👉 Java随想录 文章目录DNS负载均衡Nginx负载均衡负载均衡算法负载均衡配置超时配置被动健康检查与主动健康检查LVS/F5Nginx当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到…

Navicat Premium 安装 注册

Navicat Premium 一.Navicat Premium的安装 1.暂时关闭windows的病毒与威胁防护弄完再开,之后安装打开过程中弹窗所有警告全部允许,不然会被拦住 2.下载安装包,解压 链接:https://pan.baidu.com/s/1X24VPC4xq586YdsnasE5JA?pwdu4vi 提取码…

论文阅读 | Real-Time Intermediate Flow Estimation for Video Frame Interpolation

前言:ECCV2022 快速插帧方法 Real-Time Intermediate Flow Estimation for Video Frame Interpolation 引言 进行视频插帧目前比较常见的方法是基于光流法,分为两个步骤:1.通过光流对齐输入帧,融合对齐的帧 光流并不能直接同于…

epoll 笔记

maxevents 参数大小一般不超过64必须够了 maxevents 个事件,才会传到用户空间吗?可见,只要有事件就可以传到用户空间。一台服务器可以支撑多少个链接https://blog.csdn.net/mijichui2153/article/details/81331345 0、两台虚拟机的初始状态如…

亮个相吧小宝贝儿,五款压箱底的软件

今天要给大家推荐5款压箱底的宝贝软件了,百度搜索一下就能找到下载链接了。 1.开源浏览器——Firefox Firefox是一个自由的,开放源码的浏览器,适用于 Windows, Linux 和 MacOS X平台,Mozilla Firefox官方版体积小速度快&#xf…