在公司项目和自己开源项目之间切换容易提交错误的提交者信息,比如在 github 项目用公司邮箱和账号 push 了代码,导致泄露隐私。本文将介绍一个非常优雅的方案的实现 git 公司账号和个人账号的自动切换。
手动挡 🕹️
我们可以手动订正,用下面的命令修改最近一个提交的的提交者信息:
js
git commit --amend --author="legend80s <git@github.com>"
然后使用 gum use github/legend80s 将本项目锁定为 github 账号,或使用 gum use corp 切换到公司账号。
gum 介绍见 www.npmjs.com/package/@ga...
下面的账号需要你预先用 gum 设置好。
ts
❯ gum list
Currently used name=liuchuanzong email=liuchuanzong@cnaeit.com
┌────────────┬───────────────┬─────────────────────────┐
│ group-name │ name │ email │
├────────────┼───────────────┼─────────────────────────┤
│ global │name_in_company│name_in_company@corp.com │
│ corp │name_in_company│name_in_company@corp.com │
│ github │ legend80s │ foobarbar@qq.com │
│ legend80s │ legend80s │ foobarbar@qq.com │
└────────────┴───────────────┴─────────────────────────┘
如何一劳永逸避免出现该问题呢,即进入公司目录自动使用公司账号,进入自己项目目录则切换到私人账号。
最近学到一个 git 配置,分享给大家~
自动挡 🚙
条件配置一劳永逸 includeIf
公司项目和个人项目存放在不同的固定路径下,在 ~/.gitconfig 中使用 includeIf 指令,则会根据工作目录的路径,自动加载对应的 Git 配置。非常优雅的方案。
这个方法能实现"进入目录,自动切换配置",非常适合项目路径规整的情况。以 windows 为例,使用 git bash:
设置
假设我们将公司代码库放在 D:/workspace/company/ 个人放在 F:/workspace/github/
-
第一步:创建专用配置文件
为你公司的工作目录创建一个独立的配置文件,比如
~/.gitconfig-company:ini# ~/.gitconfig-company [user] name = 你的公司用户名 email = company-email@example.com同理,可以为个人项目创建
~/.gitconfig-github。 -
第二步:修改全局配置
编辑你的全局Git配置文件(通常是
~/.gitconfig),使用includeIf指令:ini[user] # 这里是你的全局fallback配置,可设置个人账户信息 name = 用户名 email = foo@example.com # 当工作在公司目录下时,加载公司专用的配置 [includeIf "gitdir:D:/workspace/company/"] path = ~/.gitconfig-company # 当工作在个人目录下时,加载个人专用的配置 [includeIf "gitdir:F:/workspace/github/"] path = ~/.gitconfig-github注意 :
gitdir:后面的路径必须以斜杠 (/) 结尾,以确保匹配该目录下的所有项目。
效果
初始化不进入工作和个人项目目录,git config user.email 显示全局设置邮箱,进入公司目录后显示公司邮箱,进入个人 github 目录后显示个人邮箱。说明我们的设置已经成功。