(git应用)一台电脑多项目版本控制

前言

作为前端工程师,我们要支持不同框架,不同终端的开发,有些框架只能在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 [email protected]: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 "[email protected]" 
## 注意:需要指定保存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 [email protected]:WinwardZ/puppeteer-netease.git 并且采用了 Host为zwh 的 IdentityFile(ssh key)

小结

自己测试过的,确实可以使用。

相关推荐