前言
作为前端工程师,我们要支持不同框架,不同终端的开发,有些框架只能在mac上面开发、打包,比如Rn,Cordova-ios,同时如果我们小组10个人只有数台mac怎么办?
ps:平时用不到那么多mac,所以不会采购新的机器。
痛点
假设我们每个人维护一个项目,那么如何保证自己的项目不会被别人“误提交”,也就是保证每个项目的版本控制权限。
A)如果在~/.gitconfig的[user] section中配置全局的user.email / user.name,则无法满足每人用各自的帐号进行版本管理的需求
B)如果每个工程师负责的项目用各自的帐号进行提交(即在每个项目的作用域内配置user.email / user.name),那么,git push时,机器如何选择该项目对应的ssh key进行权限验证?
思路
如果每个项目我们在做git操作的时候知道是哪个项目,就可以,操作项目一时,使用项目一的技术owner的git配置,操作项目二时,使用项目二的技术owner的git配置,其中包括,ssh key以及userName等。
详解
如何得知呢? remote url
当我们clone的时候 pull,push的时候,其实都是由remote url 绑定了我们与远程库的关系。如果我们提前设置了remote url,就可以在操作的时候应用不同的git配置。如下所述:
1.设置remote url Host别名
git clone git@github.com:WinwardZ/puppeteer-netease.git
=> 将域名github.com改为随便一个别名(zwh)
git clone git@zwh:WinwardZ/puppeteer-netease.git
## git@会走ssh协议,所以~/.ssh/config中的配置使得机器可以识别zwh这个别名
2.生成ssh key
ssh-keygen -t rsa -C "youremail@yourcompany.com"
## 注意:需要指定保存ssh key的文件为 /你想保存的地址/zwh/id_rsa
3.配置ssh config
$ cd ~/.ssh
$ vi config
Host zwh(步骤一中的别名)
Hostname github.com(真正对应的平台域名)
User git
PreferredAuthentications publickey
IdentityFile /你想保存的地址/zwh/id_rsa(对应的ssh key文件地址)
4.测试
git clone git@zwh:WinwardZ/puppeteer-netease.git
就是git clone git@github.com:WinwardZ/puppeteer-netease.git
并且采用了 Host为zwh 的 IdentityFile(ssh key)
小结
自己测试过的,确实可以使用。