假设我有两个 GitHub 账号, 名为 zs(张三) 和 ls(李四). 张三李四存储 ssh key 的文件夹 .ssh/ssh-key-xx/ 的内容各自有如下结构:
1 | .ssh/ |
其中 .ssh 文件夹内由 ssh-keygen -t RSA -C email 生成, .gitconfig 是配置文件, .gitignore_global 是全局 ignore 配置文件, .stCommitMsg 是 commit 信息模板.
.gitconfig 文件模板:
1 | [user] |
.gitignore_global 文件模板:
1 | *~ |
Windows
使用 ssh 自带的 config 功能
配置 ~/.ssh/config 文件
Windows 语法
1 | Host zs |
上面配置的意思为, 使用 zs 账号时将 github.com 替换成 zs 别名, 例如 git clone git@zs:username/project.git, 这时 git@zs 将对 张三账号有权限. git@ls 将对李四账号有权限.
在首次设置过远程地址 git remote add origin git@zs:... 或克隆远程地址 git clone git@zs:... 之后, 再使用就正常进行操作即可.
MacOS
方法 1: 参考 Windows, 只是语法略有不同
MacOS 语法
1 | Host zs |
方法 2: 安装 docker, 在 ~/.zshrc 中定义函数, 用于调用 docker 的 git 镜像, 实现多账号功能
1 | function gitzs () { |
使用 gitzs 命令 替代 git 即 gitzs clone git@github.com:username/project.git 将对张三账号有权限. 同样, 使用 gitls 命令替代 git 将对李四账号有权限
之后都使用 gitzs 和 gitls 替代 git 命令, 实现对张三李四账号的控制.