美文网首页
git根据项目目录配置多个用户名和邮箱,防止泄漏公司邮箱

git根据项目目录配置多个用户名和邮箱,防止泄漏公司邮箱

作者: 首席潜水官 | 来源:发表于2020-05-09 09:45 被阅读0次

    一、目的

           很多同学都是公司和私人电脑混用。公司使用的是自己搭建的gitlab,而自己可能参与一些开源的项目。不希望在开源项目泄漏公司的内部邮箱或者泄漏自己的个人信息。比较笨的方法是每个项目单独设置git config user.name。但是如果偶尔忘记了设置比较坑爹。所以希望可以自动区分公司的项目还是开源的项目。自动使用不同的用户名和邮箱。

    二、原理

            查阅了一下git的文档,一开始打算是以git的地址区分的。例如gitlab.xxx.com 就使用用户名A。github.yyy.com使用用户名B。但是找了一圈没有发现有支持(或许有,我没找到,如有请告知一下。)。只找到一个includeIf 和 gitdir。在原文件配置一个[user] 利用includeIf 如果命中,就加载path里面配置的[user] 把原来的[user]覆盖。达到切换效果。

    三、实施步骤

    1. git的版本

            git --version 查询当前版本。需要2.13.0之后的版本才支持。

    2. 整理你的工作空间

            把公司的项目放到一下路径下面。git clone的路径

            例如:对于公司的项目使用  /任意前缀/workspace/company

    3. 找到你的.gitconfig文件 

             MacOS 的位置 ~/你的用户名/.gitconfig

             Windows的位置 User/你的用户名/.gitconfig

    4. 修改.gitconfig文件配置 

        4.1 在原来[user] 的下方 添加 includeIf 标签

            [user]

                name = yourname

                email = youremail@qq.com

            [includeIf "gitdir:/任意前缀/workspace/company/"]

                path = .gitconfig-company

        4.2 在.gitconfig同级目录增加一个命名为.gitconfig-company文件

            文件内容:

            [user]

                name = companyusername

                email = companyemail@xx.com

             文件根据你的实际需要,改成你需要的名称和邮箱。

         4.3 windows 版本稍微有点不一样

             1⃣️.文件无法命名成 .gitconfig-company结尾。提示文件名为空。可以命名成 company.gitconfig

             2⃣️.盘符和文件路径分隔符。举例:如果你的workspace在 d:/xx/workspace/company你的 includeIf 使用如下:

            [includeIf "gitdir/i:D:/任意前缀/workspace/company/"]

                path = company.gitconfig

    5. 验证 

            在公司项目有 .git 文件夹那层 打开命令窗口 输入 git config user.name  或者  git config user.email

                    显示的会是 你公司配置文件的用户名或邮箱

            在其他项目有 .git 文件夹那层 打开命令窗口 输入 git config user.name 

                    显示的会是 默认的用户名或邮箱

    参考文档:

    https://git-scm.com/docs/git-config#_includes

    相关文章

      网友评论

          本文标题:git根据项目目录配置多个用户名和邮箱,防止泄漏公司邮箱

          本文链接:https://www.haomeiwen.com/subject/bqshnhtx.html