GIT配置同设备多账号管理与SSH配置
配置SSH进行远程服务器快速连接
修改~/.ssh/config
文件进行配置
Host server01 # 配置服务器别名
HostName xxx.xxx.xxx.xxx # 服务器ip
User root # 登录用户名
配置完成后,可使用别名进行连接
# 原本的连接,需要用户名和真实ip
ssh root@xxx.xxx.xxx.xxx
# 配置完成后可使用别名直接连接
ssh server01
处理长时间未使用导致的远程连接断开
配置文件中增加轮询防止ssh自动断开
Host *
ServerAliveCountMax 5 # 断开时重试连接的次数
ServerAliveInterval 5 # 每隔5秒自动发送一个空的请求以保持连接
单台设备多个git账号公钥的配置
控制台键入
ssh-keygen -t rsa -C "邮箱"
生成公钥(单个邮箱单种加密只可生成一个公钥匙。因不指定文件名会进行覆盖)cat ~/.ssh/id_rsa.pub
查看公钥,将其复制进git的ssh公钥中(例如gitlab,github等)git平台保存公钥时可将标题指明为设备,防止单个邮箱在多个设备上生成不同的公钥,产生混淆
在生成公钥时一般使用邮箱进行生成。如要区分公司账号与自己账号,自己账号尽量使用同一个邮箱,后续会有说明
注意: 同一个邮箱使用同一种加密算法生成的公钥相同。在生成公钥时,尽量每个站点生成名称不同的公钥文件
Host gitlab.com
HostName gitlab.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitlab # gitlab的公钥
Host github.com
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa # github的公钥
Host gitee.com
HostName gitee.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa # gitee的公钥
配置完成后进行测试
ssh -T git@gitlab.com # 测试gitlab的公钥配置是否成功
ssh -T git@github.com # 测试github的公钥配置是否成功
ssh -T git@gitee.com # 测试gitee的公钥配置是否成功
说明:多个git平台可使用相同的公钥文件。以上述github与gitee为例,由于是同一个邮箱,使用相同的公钥
查看git配置与多个git平台账号问题
查看git系统配置(非必须)
git config --system --list
查看git全局配置
git config --global --edit
或vim ~/.gitconfig
[user]
name = xxx
email = xxx@xx.com
- 查看git项目配置
git config --local --list
或vim .git/config
在初次git使用时,可能配置了全局的用户名与邮箱(global配置)。该配置会让该设备所进行的所有推送都将使用该用户名与邮箱。
注意:
在未设置全局与项目的情况下,终端中使用
git push
将使用系统配置,若无系统配置,将使用设备系统设置中的用户名与邮箱进行推送邮箱 是确定 提交 git平台账号的标识。如果邮箱不匹配git平台账号,则git平台会显示为其他用户推送,不会正常统计git平台账号的贡献次数。commit信息异常请检查执行commint操作的邮箱是否正确,与执行push操作的邮箱无关
修改指定项目的推送用户名和邮箱。通过bash执行
git config --local user.name "xxx"
与git config --local user.email "xxx@xx.com"
或编辑项目的.git/config
添加(通过bash命令添加即是在config中加入下列对应参数)
[user]
name = xxx
email = xxx@xx.com
设置项目推送的 邮箱 与git平台账号一致,以保证git平台正常统计。即使用户名不一致,使用邮箱一致即可(保证生成公钥邮箱、git登录邮箱、推送邮箱三者一致)
同一项目向多个git平台推送
执行一次
git push
同时推送多个平台确保本地已存在该项目代码
本地不存在时,选择一个仓库进行clone
本地已存在时,可执行一次
git push
保证已有平台上的代码为最新代码
在另一个平台新建仓库(不需要仓库名一致)
修改
.git/config
[remote "origin"] url = git@github.com:xxx/xxxxx.git # 添加需要额外推送的仓库git链接 url = git@gitee.com:xxx/xxxxx.git fetch = +refs/heads/*:refs/remotes/origin/*
执行
git push
将代码推送到新平台注意:以此方式进行推送,多个git平台在推送时将使用统一的用户名与邮箱。如果git平台的邮箱不一致,则无法使多个git平台同时正确的统计账号贡献信息
配置多个remote进行多次推送保证多个git平台都能正常统计账号贡献信息
- 修改
.git/config
,删除[remote "origin"]
,新增多个git平台的remote配置
[remote "github"] url = git@github.com:xxx/xxxxx.git fetch = +refs/heads/*:refs/remotes/origin/* [remote "gitee"] url = git@gitee.com:xxx/xxxxx.git fetch = +refs/heads/*:refs/remotes/origin/*
bash中使用
git remote
测试是否配置成功在推送前修改
.git/config
中的user信息
[user] name = xxx email = xxx@xx.com
- 推送时根据user信息对两个仓库分别进行修改后的推送
# 推送github git push github matser # 推送gitee git push gitee master
- 修改
修改全局配置实现对用户名与密码的自动选择(需要git版本2.36.0)
- 通过if对仓库地址进行判断从而读取不同的配置文件
[includeIf "hasconfig:remote.*.url:git@gitlab.com*/**"] path = ~/.gitconfig-gitlab [includeIf "hasconfig:remote.*.url:git@github.com*/**"] path = ~/.gitconfig-github [includeIf "hasconfig:remote.*.url:git@gitee.com*/**"] path = ~/.gitconfig-gitee