一、背景说明

本人使用了多个 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. 项目实战:Qt中英文输入软键盘(支持Qt4、Qt5、触摸和键鼠混合输入等)

      需求   1. 全屏软键盘:  2. 输入英文:  3. 输入中文:  4. 支持触摸.键盘和输入混合输入:  5. 目前有黑色系皮肤:  6. Qt4和Qt5区分2个版本:   Demo:Qt5 ...

  2. 苹果工程师对iOS线程开发的那点事津津乐道

    pthread,Thread总结 pthread: 通用的多线程API 使用方法 // 1. 创建线程: 定义一个pthread_t类型变量 pthread_t thread; // 2. 开启线程: ...

  3. 【Azure 应用服务】Web.config中设置域名访问限制,IP地址限制访问特定的页面资源 (Rewrite)

    问题描述 问题一:web app已经绑定了域名,例如是www.a.com,现在只允许使用www.a.com 访问,如果使用默认的域名xxxx.chinacloundsites.cn访问的时候,需要显示 ...

  4. 从全球顶级数据库大会 SIGMOD 看数据库发展趋势

    本文来自 NebulaGraph 的软件工程师文豪在美国费城参加 2022 年 SIGMOD 大会时的见闻.SIGMOD 是数据库领域的顶级会议之一,是 CCF 数据库 / 数据挖掘 / 内容检索领域 ...

  5. Tiktok api接口 获取视频列表、用户详情,视频无水印数据采集

    iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的Tiktok数据采集API,供用户按需调用. 接口使用详情请参考Tiktok接口文档 接口列 ...

  6. 学习ASP.NET MVC 编程系列文章目录

    学习ASP.NET MVC(一)--我的第一个ASP.NET MVC应用程序 学习ASP.NET MVC(二)--我的第一个ASP.NET MVC 控制器 学习ASP.NET MVC(三)--我的第一 ...

  7. [学习笔记]PostgreSQL数据库的安装和配置

    安装 安装源 yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat ...

  8. 写了一个 dict.cn 的油猴脚本,目的是通过url进行搜索。这样就能配合wox进行单词的搜索了。

    写了一个 dict.cn 的油猴脚本,目的是通过url进行搜索.这样就能配合wox进行单词的搜索了. // ==UserScript== // @name dict.cn // @namespace ...

  9. C++标准库字符串流sstream

    sstream与strstream 在C++有两种字符串流,一种在<strstream>中定义,另一种在<sstream>中定义,两者的区别如下: strstream里包含st ...

  10. mybatis-plus详细使用教程

    mybatis-plus使用教程 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章http://www.javaman.cn/jszw/mybatis-plus 什么是Mybati ...