本地同时使用多个git账号
config文件说明
Git Document指示在首次安装git的时候需要配置Config的相关内容信息,有三个地方存储了config文件,决定了读取的场景不同。
1 /etc/gitconfig:系统级别的gitconfig。包含所有当前系统上的user配置。如果git config命令使用了参数--system,将从这个文件的读和写。
输入:
git config --system user.name "testname"
然后在F:\Git\mingw64\etc\gitconfig找到了user为testname的字符串。
2 ~/.gitconfig or ~/.config/git/config:全局的gitconfig, 通过 --global参数操作。
输入:
git config --global user.name "testname"
然后在C:\Users\你的用户名\.gitconfig找到了user为testname的字符串。
由于这里需要在一个用户下使用多个git账号,所以把global的这个config文件删除了
或者使用命令
git config --global --unset user.name
git config --global --unset user.email
3 你的项目/.git/config: 每个项目单独的config文件。.git这个文件夹可能是隐藏的。
如果三个地方都设置了,优先级为:项目config>global>system
以上均在windows10上操作的结果
查看配置
git config --global --list
git config --system --list
git config list
hexo deploy的时候使用的global的config。要指定hexo的提交用户,修改global的config。
问题:Permission to user1/repo.git denied to user2
解决步骤
- 查看
_config.yml文件中git库地址是不是https的,如果是修改成ssh的。 - 为不同的项目生成多个ssh key
控制台输入参数
步骤1 ssh key,cd到目录~/.ssh/(会在当前目录下创建),输入:
ssh-keygen -t rsa -C "git账号邮箱"
出现如下提示
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/luna/.ssh/id_rsa):
这里输入一个存放key的名称(如不输入直接回车使用的是默认的名称id_rsa),输入后出现提示
Enter passphrase (empty for no passphrase):
直接回车,出现提示
Enter same passphrase again:
直接回车,出现成功提示,如下,则说明新建成功
Your identification has been saved in "这里是之前输入的名称".
Your public key has been saved in "这里是之前输入的名称".pub.
The key fingerprint is:
SHA256:cAK6PaYB7JWoHnkoF453D1weQjTYqsdDE23M "这里是之前输入的邮箱"
The key's randomart image is:
+---[RSA 2048]----+
|+AA+uu |
|@B*=*. |
|B+=..o . |
|oo+++ + |
|o=-. S |
|o= . |
|+.o |
| |
| .. |
+----[SHA256]-----+
直接一次性输入参数
生成ssh key时同时指定保存的文件名
ssh-keygen -t rsa -f ~/.ssh/id_rsa_first -C "邮件地址"
之后的两个提示直接回车
上面的id_rsa_first就是我们指定的文件名,这时~/.ssh目录下会多出id_rsa_first和id_rsa_first.pub两个文件,id_rsa_first.pub里保存的就是我们要使用的key。
查看ssh key
cat ~/.ssh/id_rsa_first.pub
注意:修改了当前账户的ssh key,有时没生效,需要重新新建文件夹来git init。
配置项目的git用户名和邮箱
git config user.name "用户名"
git config user.email "邮箱"
新增并配置config文件
如果config文件存在则直接修改,不存在则先新建一个config文件
touch ~/.ssh/config
如果是在windows下新建一个txt文本,然后将名字后缀一起改成config即可
配置config文件
在config文件里添加如下内容(User表示你的用户名)
# first
Host first.github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_first
User first_user
# second
Host second.github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_second
User second_user
hostname为host转化后的域名
注意:这里windows下面IdentityFile路径也是用反斜杠
修改remote url git@ 后面的需要与host一样
直接修改config文件:打开项目->.git->config文件
url = git@github.com:xxx/xxx.git
修改为:
url = git@first.github.com:xxx/xxx.git
根据上面的配置,就要把github.com换成first.github.com, 那么ssh解析的时候就会自动把first.github.com 转换为 github.com
添加key到项目
根据上面生成的key添加到对应的项目中。
测试ssh key是否配置成功
ssh -T git@fisrt.github.com
ssh -T git@second.github.com
这里不要后面的xxx.git
如果需要打印详细信息使用-v
ssh -v git@fisrt.github.com
ssh -v git@second.github.com
如果配置成功,则会显示:
Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.
解析步骤
- 当push变更时,首先拿到当前项目的remote url如git@github.com:xxx/xxx.git
- 然后在~/.ssh/config中寻找对应的真实的url替换成真实地址git@first.github.com:xxx/xxx.git
- 拿到对应的identiyFile对应的ssh文件中的key提交,完成。
所以在部署hexo的时候需要把__config例的repo地址修改为git@first.github.com:xxx/xxx.git
clone某个项目的时候也需要把url修改:
git clone git@github.com:xxx/xxx.git
修改为
git clone git@first.github.com:xxx/xxx.git
错误
ssh_exchange_identification: Connection closed by remote host
fatal: Could not read from remote repository.
OpenSSH_7.6p1, OpenSSL 1.0.2n 7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
ssh: Could not resolve hostname source.github.com:xxx/xxx.git: Name or service not known
这里没有找到~/user/.ssh/config文件,所以找到了系统的ssh_config文件,发现没有相关配置项。
新建config文件时新建成了config.config,ssh 客户端找不到config文件,所以读取了系统的/etc/ssh/ssh_config
本地同时使用多个git账号的更多相关文章
- 一台电脑同时使用多个Git账号
参照 https://my.oschina.net/u/3578363/blog/2209781
- 同台电脑 多Git账号同时使用
前言 有次周末忘记带公司电脑回来,恰好遇到有个问题需要修复,又不想跑公司一趟,于是研究了下如何在自己电脑上同时使用两个 git 账号 正文 1. 首先就和第一次安装 git 时一样,使用 sha算法 ...
- 如何切换本地的GIT账号
如何切换本地的GIT账号 1.为什么登陆第一次Git之后,就不用登陆了呢? 因为电脑已经将你的登陆凭据给保存起来了. 这也正是你不知道如何切换账号的原因. 2.在哪里能看已经保存的登陆凭证呢?并能够切 ...
- 如何在一个电脑上同时使用两个Git的账号
前言 又需要登录公司的账号,又想在电脑上使用自己的账号. 实现 首先是git config方面的设置,要取消掉原本对于git账号的全局设置. git config --global --unset u ...
- Git-在一个电脑上同时使用两个Git的账号
前言 又需要登录公司的账号,又想在电脑上使用自己的账号. 实现 首先是git config方面的设置,要取消掉原本对于git账号的全局设置. git config --global --unset u ...
- 如何用Android Studio同时使用SVN和Git管理项目
这篇来讲讲如何在 Android Studio 上同时用 SVN 和 Git 来管理项目.我知道,你肯定会说我吃饱了撑着,没事找事做,为啥要同时用 SVN 和 Git 来管理项目.问题是,我也不想啊, ...
- 一台电脑,两个及多个git账号配置
1. 生成两[三]个ssh公钥私钥 方法参照:http://www.cnblogs.com/fanbi/p/7772812.html第三步骤 假定其中一个是id_rsa, 另一个时id_rsa_two ...
- (转)windows一台电脑添加多个git账号
版权声明:技术总结来自互联网,书籍,以及工作积累.如果觉得我的总结有帮助,欢迎分享. https://blog.csdn.net/qq1332479771/article/details/701496 ...
- windows系统一台电脑先后添加多个git账号
概述 电脑上已经配置了github的ssh连接.现在又有一个不同的git账户,也就是要在一台电脑上配置两个git账号. 下面记录一下我配置的方法. 一.取消git全局配置 之前配置github的时候, ...
随机推荐
- 一文综述python读写csv xml json文件各种骚操作
Python优越的灵活性和易用性使其成为最受欢迎的编程语言之一,尤其是对数据科学家而言.这在很大程度上是因为使用Python处理大型数据集是很简单的一件事情. 如今,每家科技公司都在制定数据战略. ...
- swagger2 接口文档
1,maven: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...
- vscode vue 模版生成,vue 一键生成
vscode vue 模版 继上篇文章(vue 格式化),顺便记录下 vue 模版生成.图片就不在贴了,如果有找不到 vscode 插件商店的可以访问上篇文章. 一.安装 VueHelper 在 vs ...
- FileReader 和Blob File文件对象(附formData初始化方法);
一.FileReader为读取文件对象 . api 地址 相关demo 现在只讨论 readAsArrayBuffer,readAsBinaryString,readAsDataURL,rea ...
- iOS 图片加载速度优化
FastImageCache 是 Path 团队开发的一个开源库,用于提升图片的加载和渲染速度,让基于图片的列表滑动起来更顺畅,来看看它是怎么做的. 一.优化点 iOS 从磁盘加载一张图片,使用 UI ...
- 《 OO第一作业周期(前四周)总结 》
作为一名软件工程的大学生,很高兴能够以这样一种方式,实现对博客编写零的突破.专业课老师也介绍了编写博客给我们带来的帮助,听了以后,我感觉到了培养出写博客的习惯,是一件多么有意义的事! 话不多说,让我们 ...
- Shell:Day02.笔记
重定向和管道符:1.重定向 程序 = 指令 + 数据 命令 变量 在程序中,数据如何输入?有如何输出? 数据输入:键盘 -- 标准输入,但是并不是唯一输入方式: --std ...
- 详解java访问修饰符
详解java访问修饰符 为了防止初学者看到因为专业的术语而感觉晦涩难懂,我接下来尽量用生动比喻的说法来解释!首先第一点,我们来讲讲什么叫修饰符!看看这个名称,想想他的意思.修饰符!修饰符!,就是用来修 ...
- Spark 1.5 to 2.1.X
api差异参考官网地址:https://spark.apache.org/docs/2.1.1/sql-programming-guide.html#upgrading-from-spark-sql- ...
- log4j入门(转) --- 很详细 也很简单容易懂
log4j入门(转) Log4j实在是很熟悉,几乎所有的Java项目都用它啊.但是我确一直没有搞明白.终于有一天我受不了了,定下心去看了一把文档,才两个小时,我终于搞明白了.一般情况下Log4j总是和 ...