同一台电脑同时使用gitHub和gitLab #
工作中我们有时可能会在同一台电脑上使用多个git账号,例如:公司的gitLab账号,个人的gitHub账号。怎样才能在使用gitlab与github时,切换成对应的账号,并且免密?
gitlab配置ssh Key #
GitLab使用SSH协议与Git进行安全通信。当您使用SSH密钥对GitLab远程服务器进行身份验证时,您不需要每次都提供您的用户名和密码。SSH使用两个密钥,公钥和私钥。公钥可以分发。私钥应该受到保护。上传您的公钥是不可能泄露机密数据的。
配置GitLab的SSH Key,打开GitBash或者是cmd或者是shell
1、配置name
git config --global user.name "Kem.Gong"
2、配置email
git config --global user.email kemgong@163.com
3、生成SSH key,输入命令
ssh-keygen -t rsa
一直按回车既可,不要输入东西
4、输入
cat ~/.ssh/id_rsa.pub
5、将输出的内容复制,然后打开GitLab,单击settings->SSH Keys,把复制的内容粘贴到到Key中,点击Add key按钮完成添加
配置github #
1、生成ssh密钥并配置
ssh-keygen -t rsa -C "github邮箱地址" -f ~/.ssh/github_rsa
2、将github公钥即github_rsa.pub中的内容配置到自己的github上
3、打开github_rsa.pub,复制有所内容,填入后点击“Add SSH key”按钮。接着可能会跳转页面需要输入你的GitHub密码,输入确定即可。
配置git,访问不同host时使用不同的密钥 #
-
进入密钥生成的位置(C:/Users/用户名/.ssh/),手动创建一个config文件(注意这个config文件要无后缀)。
-
在新建的config文件里面配置如下内容:
# 自己的github账号配置 Host github.com port 22 User git HostName github.com PreferredAuthentications publickey IdentityFile C:\Users\xiaoqq\.ssh\github_rsa # 公司的gitlab账号配置(HostName为公司的gitlab地址) Host gitlab.xxx.cn port 22 User git HostName gitlab.xxx.cn User git PreferredAuthentications publickey IdentityFile C:\Users\xiaoqq\.ssh\id_rsa
字段配置简单说明:
Host Host可以看作是一个你要识别的模式,对识别的模式,配置对应的主机名和ssh文件 Port 自定义的端口。默认为22,可不配置 User 自定义的用户名,默认为git,可不配置 HostName 真正连接的服务器地址 PreferredAuthentications 指定优先使用哪种方式验证,支持密码和秘钥验证方式 IdentityFile 指定本次连接使用的密钥文件
设置HostName时需要注意,复制公司gitlab或者自己的github地址时,需要把"https://“去掉,只保留github.com部分。
验证是否设置成功 #
在C:/Users/用户名/.ssh中,右键打开Git Bash Here,分别输入命令:
# 测试github
ssh -T git@github.com
# 测试gitlab(@符后面的为公司gitlab地址)
ssh -T git@gitlab.xxx.com
PS C:\Users\tianzhiwei\Desktop> ssh -T git@github.com
Hi chain-code/Document! You've successfully authenticated, but GitHub does not provide shell access.
PS C:\Users\tianzhiwei\Desktop> ssh -T git@gitlab.forensix.cn
Welcome to GitLab, @tianzhiwei!
git仓库配置 #
简介 #
在git中,我们使用git config 命令用来配置git的配置文件,git配置级别主要有以下3类: 仓库级别 local 【优先级最高】 用户级别 global【优先级次之】 系统级别 system【优先级最低】
-
git 仓库级别对应的配置文件是当前仓库下的.git/config 【在当前目录下.git目录默认是隐藏的,所以在文件管理器中我们要打开显示以藏文件】
-
git 用户级别对应的配置文件是用户宿主目录下的~/.gitconfig 【宿主目录:C:\Users\xiaoqq】
-
git系统级别对应的配置文件是git安装目录下的 /etc/gitconfig
简单了解后我们就可以进行配置了
配置 #
-
用户级别配置
用户级别是配置公司gitlba账号还是自己github账号,可以自由选择。因为平常使用公司的代码频率较高,所以我选择将gitlab账号配置成用户级别。gitBath下执行如下命令:
git config –global user.name ’lfr’ #公司账号名称 git config –global user.email ’lfr@company.com’ #公司账号邮箱
-
仓库级别配置
local(仓库级别)配置成github的账号。选择一个文件夹作为github的本地仓库,在该文件夹里鼠标右键打开Git Bash Here,执行命令:git init
再执行命令:
git config –local user.name ‘username’ #github账号名称 git config –local user.email ‘username@gmail.com’ #github账号邮箱
之后自己的github的代码都应该在这个仓库下进行pull、push操作。
其他问题解决 #
确认 SSH 密钥权限 #
确保你的 gitlab_rsa
密钥文件的权限是正确的。如果权限过于宽松,SSH 可能会拒绝使用该密钥。你可以使用以下命令来修正文件权限:
bash
复制代码
chmod 600 /Users/***/.ssh/gitlab_rsa
确认密钥已加载到 SSH 代理 #
即使你已经配置了 config
文件,有时你仍然需要确保 SSH 代理正确加载了密钥。你可以运行以下命令来确保密钥已加载:
eval "$(ssh-agent -s)"
ssh-add /Users/tianzhiwei/.ssh/gitlab_rsa
使用 SSH 命令测试连接 #
通过运行以下命令来测试与 GitLab 的 SSH 连接,看看是否能成功验证身份:
ssh -T git@gitlab.forensix.cn
成功的输出应该类似于:
Welcome to GitLab, @username!
如果 SSH 连接成功,这意味着 SSH 配置和密钥都正确。
详细调试输出 #
如果问题仍然存在,启用详细的 SSH 调试输出,看看连接过程中是否有其他错误提示:
ssh -vT git@gitlab.forensix.cn
这样可以帮助你进一步定位问题所在。
mac配置文件位置 #
~/.ssh/config