最近公司的代码管理慢慢从svn迁移至gitlab(可参阅相关笔记),而个人也一般会采用github托管一些开源代码代码。如何能在本机环境下二者切换自如,免密,无冲突提交,这个分享下。
注:个人环境是window7,TortoiseGit 2.5.0.,git.exe 2.15.1
1. 生成密钥
打开git-bash.exe,生成公钥和私钥,生成后的目录为:C:\Users\fei.chen\.ssh
#gitlib,生成过程需要密码填写对于的密码即可
ssh-keygen -t rsa -C "fei.chen" -f ~/.ssh/gitlab_id-rsa
#github
ssh-keygen -t rsa -C "xxxx@qq.com" -f ~/.ssh/github_id-rsa
2. 同步gitlab/github服务器配置
将gitlab_id-rsa.pub中的内容粘帖到公司GitLab服务器的SSH-key(https://github.com/settings/keys)的配置中;
将github_id-rsa.pub中的内容粘帖到github服务器的SSH-key(http://xxx.git.cn/profile/keys)的配置中;
注:Title填写有意义的名字即可
3. config配置
这一步很重要,在C:\Users\fei.chen\.ssh目录下有一个config文件,它内容非常重要:要确保每一处都是正确的!
Host github.com
Preferredauthentications publickey
IdentityFile ~/.ssh/github_id-rsa
Host xxx.git.cn
Preferredauthentications publickey
IdentityFile ~/.ssh/gitlab_id-rsa
4. 添加免密登录
用于管理 ssh private keys,目的是对解密的私钥进行高速缓存。如果没有执行ssh-add的话,最后验证时它总是会弹出让你输入密码的情况。
注: 如果执行 ssh-add 时显示错误 Could not open a connection to your authentication agent,那么执行eval $(ssh-agent)
#一般的情况下ssh-agent是启动的
ssh-agent -s
#启动
ssh-agent
#查看已有的SSH keys
ls -al ~/.ssh
#添加到ssh-agent中
ssh-add ~/.ssh/github_id-rsa
ssh-add ~/.ssh/gitlab_id-rsa
5. 测试验证
测试成功(出现备注上的消息)后,基本上就大功告成,玩命令行基本上无阻碍了!
ssh -T git@xxx.git.cn
# Welcome to GitLab, @fei.chen!
ssh -T git@github.com
# Hi alex2chen! You've successfully authenticated, but GitHub does not provide shell access.
6. TortoiseGit
也有很多人使用TortoiseGit工具,也需要集成的!安装截图上的步骤来一直next点下去就可以,这里演示了下gitlab!github的设置也是同样的过程。
7. config 配置
config 配置权重是仓库>用户全局>系统 转存失败重新上传取消
#系统级
git config --system --list
#当前用户级
git config --global --list
#当前仓库级
git config --local --list
#手动设置
git config --global user.name "myname"
git config --global user.email "test@gmail.com"
#查看当前生效的配置(最终多个配置计算后的配置信息)
git config -l
#删除一个配置项
git config [–local|–global|–system] –unset user.name