Git| Github 与 Gitlab服务
Github与Gitlab的使用
1. 生成ssh key
ssh key 默认生成后保存在 ~/.ssh/
目录下 ,默认为 id_rsa 和 id_rsa.pub
两个文件,由于我们需要分开配置,所以这么做:
#1. 生成gitlab的公钥、密钥的同时指定文件名,Gitlab要使用默认地址,即C:\Users\kris\.ssh\id_rsa 即 ~/.ssh/id_rsa
ssh-keygen -t rsa -C "xxx@xx.cn" -b 4096
回车,回车
#2. 生产github的公钥、秘钥。
ssh-keygen -t rsa -C "xx@126.com"
回车输入地址
~/ssh/id_rsa_github
回车
命令执行完成后,这时~/.ssh
目录下会多出id_rsa
和id_rsa.pub
,id_rsa.github和id_rsa_github.pub; id_rsa.pub,id_rsa_github.pub
里保存的就是我们要使用的key即公钥,这个key就是用来上传到 Gitlab上的。
公钥上传到服务器,然后再把这个客户端公钥添加到authorized_keys。添加后,服务器就会认为你这个客户端为可信任。即可访问服务器。
2. 将公钥public key上传到 Github/Gitlab
以Github为例,过程如下:
- 登录github
- 点击右上方的Accounting settings图标
- 选择 SSH key
- 点击 Add SSH key
在出现的界面中填写SSH key的名称,填一个你自己喜欢的名称即可,然后将上面拷贝的~/.ssh/id_rsa_github.pub
文件内容粘帖到key
一栏,在点击“add key
”按钮就可以了。
3. 配置 config 文件
在 ~/.ssh
目录下,如果不存在,则新建 touch ~/.ssh/config
文件 ,文件内容添加如下:
(例如gitlab要clone的地址为: ssh://git@git.xxx.io:65508/data-center/dw.git github要clone的地址为 git@github.com:kris-2018/Datastructures-Algorithms.git )
Host gitlab.com
User xxx
StrictHostKeyChecking no
HostName git.xxx.io
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 65508
Host github.com
User kris-2018
StrictHostKeyChecking no
HostName ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
#Port 443
配置完成后,符合github.com
的 Git仓库,均采取 ~/.ssh/id_rsa_.github
密钥进行验证。
4. 验证是否OK
由于每个托管商的仓库都有唯一的后缀,填写刚刚配置的Host 名称。
$ ssh -T git@github.com
Hi kris-2018! You've successfully authenticated, but GitHub does not provide shell access.
kris@DESKTOP-H9GMG9A MINGW64 ~/.ssh
$ ssh -T git@gitlab.com
Welcome to GitLab, xxx!
看到这些 Welcome
信息,说明就是 OK的了
5. 配置 Git 用户名、邮箱
经常使用的可配置全局配置。
# 团队项目配置,可配置为全局
git config --global user.name 'xxx'
git config --global user.email 'xxx@cn'
# 在项目中进行局部配置,Github仓库
git config --local user.name 'xxx'
git config --local user.email 'xxx@126.com'
6. 常见问题
如果是从github上pull下的项目,需要看下pull时是按HTTPS 还是ssh 的方式 ; github设置ssh key后push还要输入用户名和密码说明拉取的时候是按Https方式,需要修改下;
因为用的是https而不是ssh,更新origin为ssh格式
HTTPS的格式为:https://github.com/用户名/仓库名.git
SSH的格式为:git@github.com:用户名/仓库名.git
$ git remote remove origin
$ git remote add origin git@xxx.git
再push的时候实际上是采用的SSH方式推送的代码。(打开config文件可以看到[remote "origin"]的url为ssh格式)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人