背景:
一个公司的git仓库账号
一个我的个人github账号
我怎么在一台电脑上同时配置呢(同时配置的想法是,公司项目A我可以拉下来,提交的commit是公司的张号,我的私人项目我也可以拉下来,提交的commit是我的个人账号)
最后经过实践,以上的想法没完全实现。不过也可以满足需求了吧算
个人理解,很多地方名词表述不标准,反正是那个意思
以下:
1️⃣首先分别为两个account生成rsa :
ssh-keygen -t rsa -C "your.email@example.com" -b 4096 选择存储位置的时候记文件名带个前缀方便区分,e.g fivejoy_id_rsa
2️⃣为当前电脑配置两个account
vim ~/.ssh/config
输入以下内容(下划线部分是需要修改的)
# GitLab server - work
Host server.host
RSAAuthentication yes
IdentityFile ~/.ssh/config/xx_id_rsa
# GitLab server - github
Host github.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/fivejoy_id_rsa
3️⃣按照常规把pub-key粘贴到git的sshkey就行
此时在你的目录下任何位置 git clone 来自这两个git server的代码都可以。
但是如果分别进行git add +commiit ,如果曾经配置过git config --global user.name.. git log显示你的提交信息是global配置的,如果没有配置过,会默认使用你的电脑名作为git提交账户。
注意git只有以下几个维度配置
git config --global
git config --system
git config --worktree
git config --local
(默认没有写这个的时候 即 直接git config user.name 使用的就是--local,表示只针对当前这个responsitory)
(一个responsity 中肯定有一个.git目录可以用ls -a 看到,cat xx/.git/conf 可以看到--local配置的是当前resp的conf)
因为git conf会逐渐覆盖,用--local的覆盖--global‘
所以最后妥协选择了如下办法
4️⃣git conf --global 设置一个常用的,如果是个人电脑就设置自己的,如果是公司电脑就设置公司的account
5️⃣如果需要对另一个account的project进行修改,直接在那个project(是个resp)下git config user.name
最后,本来是想用--worktree设置的,因为看起来像对某个目录下所有的工作区都配置,但是没有成功,可能是因为这个某个目录 并不是其下目录的resp,并没.git/conf对其进行配置。
不过现在退而求其次也可以了,毕竟,在家打开公司项目的数量少之又少,在公司打开个人项目的数量也少之又少