一、背景说明

本人使用了多个 Git 托管平台,包括 Github、Gitlab 和 Gitee。为了避免提交信息(主要是用户名和邮箱地址)错乱,我希望在向不同的托管平台提交内容时,能够自动设置相应的用户名和邮箱地址。

二、解决方案

1. 常规做法

为每个 repo 单独设置用户名和邮箱地址。

操作步骤如下:在 repo 的根目录执行 git config user.name yourname && git config user.email yourname@email.com.cn

但这种方法的缺点是操作繁琐,且极易遗忘。

2. 更好做法

使用 Git includeIf 给多个托管平台定义不同的配置。

Git includeIf 是 Git 2.13 版本引入的一个非常有用的特性,它允许你根据当前工作目录的位置来包含不同的 Git 配置。这个特性特别适合在不同的工作环境中使用不同的 Git 配置。例如,你可能在工作时使用你的工作电子邮件地址进行提交,而在家里则使用你的个人电子邮件地址。通过使用 git includeIf,你可以自动地根据当前的工作目录来切换这些配置。

三、includeIf 方案

1. 配置

(1)给每个托管平台指定保存的目录,如 Github、Gitlab 和 Gitee 平台的代码,我分别保存在D:\code\person\github\D:\code\work\gitlab\D:\code\person\gitee\ 目录下。

(2)在 .gitconfig 配置文件中通过 includeIf 指定各托管平台指定目录对应的个性化配置。配置如下:

.gitconfig,该文件默认保存在用户根目录下,配置如下:

[includeIf "gitdir:D:/code/work/gitlab/"]
path = ~/.gitconfig-gitlab [includeIf "gitdir:D:/code/person/gitee/"]
path = ~/.gitconfig-gitee [includeIf "gitdir:D:/code/person/github/"]
path = ~/.gitconfig-github

~/.gitconfig-gitlab,该文件与 .gitconfig 同目录,配置如下:

[user]
name = gitlab-name
email = gitlab-name@mail.com.cn

~/.gitconfig-gitee,该文件与 .gitconfig 同目录,配置如下:

[user]
name = gitee-name
email = gitee-name@mail.com.cn

~/.gitconfig-github,该文件与 .gitconfig 同目录,配置如下:

[user]
name = github-name
email = github-name@mail.com.cn

说明: Windows 系统中,.gitconfig 配置中需将 gitdir 路径分隔符由反斜杠\ 转为 正斜杆 /,如:D:\code\person\github\ 转为 D:/code/work/gitlab/

2. 验证

在各托管平台指定目录下任意 repo 执行以下脚本验证:

git config user.name

git config user.email

九、参考资料

Organizing multiple Git identities

docs git-config

个性化定义多个 Git 托管平台配置的更多相关文章

  1. 【01】国内外git托管平台(总结by魔芋)

    [01]国内git托管平台介绍 01, github:代码协作平台,协同开发. 代码托管平台. git:项目版本控制系统 02, 最好的托管方式: github 关闭或小众的托管方式: geakit( ...

  2. 程序员必须知道的git托管平台

    http://www.open-open.com/lib/view/open1420704561390.html

  3. Git同账号多平台配置

    最近工作中使用到了Git,虽然以前学习过,但是已经忘的差不多了,遂将本次配置过程整理成笔记以备忘 生成公钥 ssh-keygen -t rsa -C "gana10007@163.com&q ...

  4. 如何使用egit将本地代码提交到托管平台

    本文将讲述如何使用eclipse中的egit插件,将代码提交到git托管平台. Eclipse版本:4.7.0 自带egit插件 云端托管平台:华为软件开发云 1.本地git工具安装&环境配置 ...

  5. 如何更换git托管

    有时候会遇到需要更换代码托管平台,从github,gitlab或者Bitbucket迁移到其它平台,过程中可能遇到不少问题,本文从是否保留历史提交记录两种需求出发,介绍一下基于git托管平台的迁移方法 ...

  6. git多账号配置,同时使用多个代码托管平台

    git多账号配置,同时使用多个代码托管平台:https://blog.csdn.net/pinnuli/article/details/81293071

  7. Ubuntu上Git的简单配置及使用(使用的代码托管平台为gitee码云)

    目录 1.关于gitee 2.Ubuntu下Git的下载及配置 3.使用Git连接到远程的Gitee仓库 4.常用命令 1.关于gitee Gitee(码云) 是 OSCHINA.NET 推出的代码托 ...

  8. 软件工程 Coding.net代码托管平台 Git初学者的使用总结 五步完成 程序,文件,文件夹的Git

    一.前言 第一次用git相关的命令行,我使用的是Coding.net代码托管平台.Coding.net 自主打造的基于 Git 的代码托管平台,提供高性能的远端仓库,还有保护分支,历史版本分屏对比. ...

  9. 程序员必须知道的几个Git代码托管平台

    上一篇博客中2015继续任性——不会Git命令,照样玩转Git我们简单的介绍了在VS2013中使用Git,和GitHub客户端的使用.那么使用Git到底有什么好处呢?最为明显的是支持Git代码托管的平 ...

  10. 程序员必须知道的几个Git代码托管平台(转)

    上一篇博客中2015继续任性——不会Git命令,照样玩转Git我们简单的介绍了在VS2013中使用Git,和GitHub客户端的使用.那么使用Git到底有什么好处呢?最为明显的是支持Git代码托管的平 ...

随机推荐

  1. win32 - this 指针

    this指针是存在与类的成员函数中,指向被调用函数所在的类实例的地址. 根据以下程序来说明this指针, #include<iostream.h> class Point { int x, ...

  2. 使用TLP对Linux系统进行充电保护

    https://zhuanlan.zhihu.com/p/65546444 TLP:一个可以延长 Linux 笔记本电池寿命的高级电源管理工具 https://blog.csdn.net/zxw781 ...

  3. Caused by: com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed

    报错场景:spring boot+mybatis,线程池执行批量任务.springboot正常启动后,定时任务中数据库查询报错.报错信息如下: 1 Caused by: org.apache.ibat ...

  4. 【Azure 事件中心】Event Hubs中存在非常多的错误数据,是否能提前删除这些数据呢?

    问题描述 因为一些特殊原因,Event Hub 里面堆积了很多不需要的数据事件,正常要等事件中的过期时间到后才有Event Hub自动删除掉,但希望能够尽快马上删除,有没有什么手动的方法吗? 问题解答 ...

  5. Java 线程通信 例子:使用俩个线程打印1-100.线程1 线程2 交替打印

    1 package bytezero.threadcommunication; 2 3 /** 4 * 线程通信的例子:使用俩个线程打印1-100.线程1 线程2 交替打印 5 * 6 * 涉及到的三 ...

  6. java.util.Arrays 快速学习教程

    在 Java 中,java.util.Arrays类提供的多种数组操作功能,可以有效地执行各种数组相关的操作,使得数组处理变得简单和高效. 打印数组 String[] arr = new String ...

  7. Ubuntu20下安装NFS

    安装nfs-kernel-server apt install nfs-kernel-server 想好自己要把哪个目录作为NFS共享目录,创建目录 mkdir /mydata vim /etc/ex ...

  8. springboot,简要记录,方便复习,

    boot 笔记第一步新建工程,导包,由于boot的数据库框架是用mybtis -paus,所以关于数据库系统那儿不用色选mybatis ,需要重新maven导包完整导包以下人容: <?xml v ...

  9. 解密prompt系列26. 人类思考vs模型思考:抽象和发散思维

    在Chain of Thought出来后,出现过许多的优化方案例如Tree of thought, Graph of Thought, Algorithm of Thought等等,不过这些优化的出发 ...

  10. SQL执行一次完成新增或者修改操作-2022新项目

    一.业务场景 当前项目中数据库使用的postgresql,pgsql有很多的优点,比如开源免费,适合二次开发.pgsql有很多搭配使用的开源软件,比较易于拓展,语法和标准的SQL语法基本上差异不大.因 ...