假设我有两个 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
文件
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.
方法 2: 安装 docker, 在 ~/.zshrc
中定义函数, 用于调用 docker 的 git 镜像, 实现多账号功能
1 | function gitzs () { |
使用 gitzs
命令 替代 git
即 gitzs clone git@github.com:username/project.git
将对张三账号有权限. 同样, 使用 gitls
命令替代 git
将对李四账号有权限
之后都使用 gitzs
和 gitls
替代 git
命令, 实现对张三李四账号的控制.