二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • 最佳实践

  • 迎刃而解

  • Nginx

  • Php

  • Zabbix

  • AWS

  • Prometheus

  • Grafana

  • Loki

  • CentOS

  • Supervisord

  • Systemd

  • Docker

  • Docker-Compose

  • Rancher

  • Ansible

  • OpenLdap

  • GitLab

    • Gitlab简单部署
    • Gitlab备份以及恢复
    • 配置Gitlab提交代码的钉钉通知
    • 汉化Gitlab-10-1-0
    • 如何迁移一个仓库到新的Gitlab
    • Gitlab忘记root密码怎么办
    • 通过命令行git log获取各种提交信息
    • 使用curl批量在分组内创建项目
    • git更改前一次commit内容并提交到master
    • git配置github与gitlab推送时指定不同用户与邮箱
      • 不同托管站
      • 相同托管站
  • GitHub

  • Etcd

  • Consul

  • RabbitMQ

  • Kafka

  • Mysql

  • MongoDB

  • OpenVPN

  • Kvm

  • VMware

  • 配置文件详解

  • Other

  • 运维观止
  • GitLab
二丫讲梵
2022-02-09
目录

git配置github与gitlab推送时指定不同用户与邮箱

文章发布较早,内容可能过时,阅读注意甄别。

# 不同托管站

日常开发过程中,我们的 git 交互可能有公司内部的 gitlab 以及公共的 github,这个时候两边推送使用的用户以及邮箱可能不一样,因此不能用同一份配置来推送,本文说一下解决方案。

解决方案网上有好几种,这里记录一种配置相对简单的方式,就是利用配置文件的includeIf参数。

添加如下配置到 ~/.gitconfig:

$ cat ~/.gitconfig
[includeIf "gitdir:/Users/liqilong/eryajf/github/"]
    path = ~/.gitconfig_github

[includeIf "gitdir:/Users/liqilong/eryajf/gitlab/"]
    path = ~/.gitconfig_gitlab

[includeIf "gitdir:/Users/liqilong/eryajf/letsgo/project/src/"]
    path = ~/.gitconfig_gitlab
1
2
3
4
5
6
7
8
9

注意路径结尾要以 /结尾,表示此目录下所有项目应用下边 path 指定的配置文件。

然后再定义两个 path 对应的配置文件:

$ cat ~/.gitconfig_gitlab
[user]
	name = 李启龙
	email = liql@eryajf.net
[filter "lfs"]
	smudge = git-lfs smudge -- %f
	process = git-lfs filter-process
	required = true
	clean = git-lfs clean -- %f
1
2
3
4
5
6
7
8
9

另外一个:

$ cat .gitconfig_github
[user]
	name = eryajf
	email = Linuxlql@163.com
[filter "lfs"]
	smudge = git-lfs smudge -- %f
	process = git-lfs filter-process
	required = true
	clean = git-lfs clean -- %f
1
2
3
4
5
6
7
8
9

然后分别在两个目录中创建项目进行测试,发现推送的用户就变成对应定义的了。

# 相同托管站

上边举的例子是在不同代码托管站的多配置维护方案,还有一种情况是,如果我们在 GitHub 有多个账号,此时怎样维护才更加省心一些呢。

有的同学可能想到用户名和邮箱可以套上边的方式进行配置,的确可以,但是有一个问题绕不过去,那就是在 GitHub 中,同一个秘钥不能添加到不同用户账号中,鉴于这种情况,就必须要给不同账号配置不同的秘钥对了。

网上很多地方给的方案建议修改 ~/.ssh/config 来指定不同的秘钥,但交互的时候还需要手动修改一些内容,其实也麻烦,接下来这里介绍一种相对省心的方案。

假如我有两个 GitHub 账号:eryajf 和 lql95。

然后在本地电脑有两对秘钥:

$ cd ~/.ssh
$ ssh-keygen -f "github-liql"
$ ssh-keygen -f "github-eryajf"
1
2
3

把公钥添加到账号的 setting 中这个就不介绍了,主要说一下本地的配置信息。

定义如下内容在 ~/.gitconfig 文件:

$ cat ~/.gitconfig
[includeIf "gitdir:/Users/liqilong/eryajf/github-lql95/"]
    path = ~/.gitconfig_github_lql95

[includeIf "gitdir:/Users/liqilong/eryajf/github-eryajf/"]
    path = ~/.gitconfig_github_eryajf
1
2
3
4
5
6

然后再定义两个 path 对应的配置文件:

$ cat ~/.gitconfig_gitlab_lql95
[user]
	name = lql95
	email = eryajf@gmail.com
[filter "lfs"]
	smudge = git-lfs smudge -- %f
	process = git-lfs filter-process
	required = true
	clean = git-lfs clean -- %f
[core]
  sshCommand = "ssh -i ~/.ssh/github-liql"
1
2
3
4
5
6
7
8
9
10
11

另外一个:

$ cat .gitconfig_github_eryajf
[user]
	name = eryajf
	email = Linuxlql@163.com
[filter "lfs"]
	smudge = git-lfs smudge -- %f
	process = git-lfs filter-process
	required = true
	clean = git-lfs clean -- %f
[core]
  sshCommand = "ssh -i ~/.ssh/github-eryajf"
1
2
3
4
5
6
7
8
9
10
11

就是通过添加 sshCommand 实现不同配置中采用不同的秘钥,实测这种方案是最优雅好用的!

  • 参考:
    • git config 多用户配置 (opens new window)
    • How to tell git which private key to use? (opens new window)
微信 支付宝
上次更新: 2024/07/04, 22:40:37
git更改前一次commit内容并提交到master
GitHub中开源项目维护流程手册

← git更改前一次commit内容并提交到master GitHub中开源项目维护流程手册→

最近更新
01
记录二五年五一之短暂回归家庭
05-09
02
学习周刊-总第210期-2025年第19周
05-09
03
学习周刊-总第209期-2025年第18周
05-03
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式