应用场景:
一台共用服务器上多人共同使用,多个git工程每个工程的地址和账号密码又是不一样。
使用global 此时在/home/usrname下.gitconfig 会生成设置全局的git用户名及邮箱账号
git config --global user.name xxx
git config --global user.email xxx
如下命令可谓单个工程设置用户名及邮箱账号,存放在工程目录下.git/config文件中
git config user.name xxx
git config user.email xxx
使用方法
1.首先为不同的工程配置不同的Git账号
git config user.name "A"
git config user.email "A@mail.com"
注意:这里git config命令没有带—global,表示这是一个局部的设置,也就是这个用户是当前项目的,而不是全局的。
2.为不同的用户生成SSH密钥
一般的Git服务器为了安全,都会需要我们提供一个安全的SSH密钥,默认情况下,生成密钥的文件名都是一样的,但是不同的用户,必须设置不同文件名的密钥文件,否则会发生覆盖。密钥生成后,添加到服务端(如Github)
ssh-keygen -t rsa -C “A@mail.com”
密钥存放在用户目录下.ssh路径下。
- SSH多账户配置
在生成密钥的.ssh目录下,新建一个config文件,配置多账户规范,举个样例:
#github ontheroadtomine@gmail.com
host github.com #别名,随便定 后面配置地址有用
Hostname github.com #要连接的服务器
User ontheroadtomine #用户名
IdentityFile ~/.ssh/id_rsa #密钥文件的地址,注意是私钥
#github softgeek@163.com
host lapisy #别名,随便定
Hostname github.com
User lapisy
IdentityFile ~/.ssh/lapisy_id_rsa
- 增加新的私钥
使用ssh的ssh-add命令将密钥添加到 ssh-agent 的高速缓存中,这样在当前会话中就不需要再次输入密码了 。
//A账户的私钥
$ ssh-add ~/.ssh/id_rsa
//B账户的私钥
$ ssh-add ~/.ssh/lapisy_id_rsa
添加完后,可以使用ssh-add来查看密钥列表
- 修改push的地址
默认情况下,我们项目下的.git目录下,config文件的内容:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[user]
email = softgeek@163.com
name = lapisy
[remote "origin"]
url = git@github.com:sample.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
其中的remore地址是url = git@github.com:sample.git,这时候,我们需要修改跟密钥对应的地址,上面在配置ssh时,为每个Hostname配置了一个host的别名,这时候,我们就不能使用原来的Hostname来提交了,要用别名来代替Hostname。
###############