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

解决步骤

  1. 查看_config.yml文件中git库地址是不是https的,如果是修改成ssh的。
  2. 为不同的项目生成多个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

或者使用命令行显示并修改remoteurl

根据上面的配置,就要把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.

解析步骤

  1. 当push变更时,首先拿到当前项目的remote url如git@github.com:xxx/xxx.git
  2. 然后在~/.ssh/config中寻找对应的真实的url替换成真实地址git@first.github.com:xxx/xxx.git
  3. 拿到对应的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账号的更多相关文章

  1. 一台电脑同时使用多个Git账号

    参照 https://my.oschina.net/u/3578363/blog/2209781

  2. 同台电脑 多Git账号同时使用

    前言 有次周末忘记带公司电脑回来,恰好遇到有个问题需要修复,又不想跑公司一趟,于是研究了下如何在自己电脑上同时使用两个 git 账号 正文 1. 首先就和第一次安装 git 时一样,使用 sha算法 ...

  3. 如何切换本地的GIT账号

    如何切换本地的GIT账号 1.为什么登陆第一次Git之后,就不用登陆了呢? 因为电脑已经将你的登陆凭据给保存起来了. 这也正是你不知道如何切换账号的原因. 2.在哪里能看已经保存的登陆凭证呢?并能够切 ...

  4. 如何在一个电脑上同时使用两个Git的账号

    前言 又需要登录公司的账号,又想在电脑上使用自己的账号. 实现 首先是git config方面的设置,要取消掉原本对于git账号的全局设置. git config --global --unset u ...

  5. Git-在一个电脑上同时使用两个Git的账号

    前言 又需要登录公司的账号,又想在电脑上使用自己的账号. 实现 首先是git config方面的设置,要取消掉原本对于git账号的全局设置. git config --global --unset u ...

  6. 如何用Android Studio同时使用SVN和Git管理项目

    这篇来讲讲如何在 Android Studio 上同时用 SVN 和 Git 来管理项目.我知道,你肯定会说我吃饱了撑着,没事找事做,为啥要同时用 SVN 和 Git 来管理项目.问题是,我也不想啊, ...

  7. 一台电脑,两个及多个git账号配置

    1. 生成两[三]个ssh公钥私钥 方法参照:http://www.cnblogs.com/fanbi/p/7772812.html第三步骤 假定其中一个是id_rsa, 另一个时id_rsa_two ...

  8.  (转)windows一台电脑添加多个git账号

    版权声明:技术总结来自互联网,书籍,以及工作积累.如果觉得我的总结有帮助,欢迎分享. https://blog.csdn.net/qq1332479771/article/details/701496 ...

  9. windows系统一台电脑先后添加多个git账号

    概述 电脑上已经配置了github的ssh连接.现在又有一个不同的git账户,也就是要在一台电脑上配置两个git账号. 下面记录一下我配置的方法. 一.取消git全局配置 之前配置github的时候, ...

随机推荐

  1. windows常用系统命令

    dir指定要列出的驱动器.目录和/或文件 显示当前路径下的所有文件的绝对路径,包含子文件夹中的内容 dir /b / s /o:n /a:a /b 表示去除摘要信息,且顶格显示完整路径 /s 表示枚举 ...

  2. 模块 collections 高级数据类型

    collections模块 原文来自cnblog 的 Eva-J Eva-J 介绍了collections模块的常用方法,和演示实例 在 Python cookbook 的第一章中还有一些 更加好玩的 ...

  3. [vios1023]维多利亚的舞会3<强联通分量tarjan>

    题目链接:https://vijos.org/p/1023 最近在练强联通分量,当然学的是tarjan算法 而这一道题虽然打着难度为3,且是tarjan算法的裸题出没在vijos里面 但其实并不是纯粹 ...

  4. Linux下使用FastDFS

    本文所有操作均在CentOS 7.x环境下进行. 1.1.单节点FastDFS 整个安装过程非常复杂,很容易出错,建议进行多次备份. 我们这里不打算安装多台虚拟机,因此会把tracker和storag ...

  5. 【纯净镜像】原版Windows7集成USB3.0+NVME补丁+UEFI引导旗舰版下载

    系统简述: 1. 基于MSDN原版Windows7 Ultimate With SP1系统制作,无任何插件和垃圾软件. 2. 系统集成IE11浏览器,装完系统后默认浏览器就是IE11. 3.系统注入了 ...

  6. Java并发基础05. 传统线程同步通信技术

    先看一个问题: 有两个线程,子线程先执行10次,然后主线程执行5次,然后再切换到子线程执行10,再主线程执行5次--如此往返执行50次. 看完这个问题,很明显要用到线程间的通信了, 先分析一下思路:首 ...

  7. PTA数据结构与算法题目集(中文) 7-11

    PTA数据结构与算法题目集(中文)  7-11 7-11 关键活动 (30 分)   假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行.“任务调度 ...

  8. PTA数据结构与算法题目集(中文) 7-9

    PTA数据结构与算法题目集(中文)  7-9 7-9 旅游规划 (25 分)   有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游 ...

  9. 用人话告诉小白:什么是项目管理(例如Maven),什么是调试工具(即debugger),什么是编译(即compile)

    项目管理 以java程序的项目管理软件Maven为例,java程序根据代码的不同需要不同的jar文件才能编译运行. 人物:两个程序员A和B 物品:一个java程序G,许多jar文件 场景:当A在自己电 ...

  10. 微信小程序将外部数据从父组件中传入到子组件

    小程序组件开发遇到一个组件内嵌两个组件,而这两个子组件所使用的数据来自于同一个API,如下图所示. 如果这时候两个子组件各自导入同一个接口就会显得多余.另外的办法是由父组件导入接口数据,再从父组件将接 ...