# 一、SSH 免密 与 多账号管理
解决
git pull
要登录远程仓库作者账号问题
问题描述:
- https:// 开头的地址, 需要账号密码才能克隆/推送
利用的是安装 git 时默认安装的“Git Gredential Manager for Windows”辅助工具,将账号/密码存放在 windows 凭据 中
- git@ 开头的地址, 需要 ssh 秘钥文件配置好后, 能免账号密码克隆/推送
ssh 秘钥登录是使用 ssh 生成公钥和私钥,然后让远程服务器的公钥和本地的私钥进行对比,从而验证身份的合法性
提示
ssh 加密类型,原先 rsa
较为流行,现在 ed25519
逐渐流行起来了
# 1、ssh 免密
① 本地生成 key
# 生成 ssh-keygen -t rsa -C "GitHub邮箱" # ……一路回车即可 # 查看 cat ~/.ssh/id_rsa.pub
Copied!
② GitHub 关联 key
GitHub 生成 SSH Key,内容为上面 id_rsa.pub 文件中的内容(具体操作:略)。
③ 连接测试
ssh -T git@github.com
Copied!
# 2、多账号管理
有时候,尽管我们只有一台电脑,但可能你会同时使用多个远程仓库账号:GitHub 账号、gitee 账号(同时你还可能有不止一个 GitHub 账号)
# ① 生成 SSH 密码
- GitHub
ssh-keygen -t rsa -C "GitHub邮箱" # 然后依次输入 /c/Users/<电脑用户名>/.ssh/id_rsa_github # [设置本地pull密码]
Copied!
- GitLab
ssh-keygen -t rsa -C "GitLab邮箱" # 然后依次输入 /c/Users/<电脑用户名>/.ssh/id_rsa_gitlab # [设置本地pull密码]
Copied!
- Gitee
ssh-keygen -t ed25519 -C "gitee邮箱" # 然后依次输入🚩 /c/Users/<电脑用户名>/.ssh/id_ed25519_gitee # [设置本地pull密码]
Copied!
- Codeup
ssh-keygen -t ed25519 -C "codeup邮箱" # 然后依次输入🚩 /c/Users/<电脑用户名>/.ssh/id_ed25519_codeup # [设置本地pull密码]
Copied!
# ② 多账号配置
- 配置文件 config
cd ~/.ssh && touch config vim config # 按i编辑 # 按Esc后输入:wq退出编辑
Copied!
Host 后的内容为:HostName 别名
# 配置github.com Host github.com HostName github.com IdentityFile ~/.ssh/id_rsa_github PreferredAuthentications publickey User <使用git时个人配置的user.name> # 配置gitlab.com Host [团队/公司gitlab的公网ip/域名] HostName [团队/公司gitlab的公网ip/域名] IdentityFile ~/.ssh/id_rsa_gitlab PreferredAuthentications publickey User <使用git时个人配置的user.name> # 配置gitee.com Host gitee.com HostName gitee.com IdentityFile ~/.ssh/id_ed25519_gitee PreferredAuthentications publickey User <使用git时个人配置的user.name> # 配置codeup.aliyun.com Host codeup.aliyun.com HostName codeup.aliyun.com IdentityFile ~/.ssh/id_ed25519_codeup PreferredAuthentications publickey User <使用git时个人配置的user.name>
Copied!
# ③ GitHub 关联 key
- key 的目录
cd ~/.ssh
Copied!
将本地生成 SSH Key(即:id_rsa_github.pub
/id_ed25519_gitee.pub
/id_ed25519_codeup.pub
文件)中的内容,拷贝到相应的代码托管平台的 SSH 公钥处。
# ④ 连接测试
ssh -T git@<HostName 别名> # GitHub账号 ssh -T git@github.com # GitLab账号 ssh -T git@[团队/公司gitlab的ip/域名] # gitee账号 ssh -T git@gitee.com # codeup账号 ssh -T git@codeup.aliyun.com
Copied!
# 二、vscode 开发与 git 使用
虽然直接在 Git Bash 中使用 git 命令有诸多好处,但也有一定的缺点:
- 当 commit 版本、分支较多时,不便于观察
- 实际开发中 commit 版本、文件间的
diff
差异比较在 Git Bash 中也不便于观察 - ……
# 1、vscode 添加 git 终端
具体操作:略
# 2、Git Graph 和 GitLens 插件 🚩
下面列出我比较看中的功能
① Git Graph
- 查看分支结构
- 查看每个 commit 版本的 commit 了哪些文件
② GitLens
我通常会勾选:
- File History:用来比较单个文件的版本差异
- Commits:用来比较两个 commit 版本间的差异
- Stashes:方便进行
stash
存储管理
# 总结
个人还是强烈推荐详细的学习一下 git 命令。因为通过命令的方式不仅可以迅速的完成操作,还可以对当前 git 项目文件的状态有一个良好的感知。
以 git 命令为主,插件工具为辅
对 git 插件、git 工具使用久了会产生依赖。若换了个插件、工具,又或者它们里面没有你想要的 git 功能,岂不是违和感暴增 😂。
# 三、github 与 协同开发
TIP
主动参与,并为他人、团队项目做出 Contribute,即能提升自己的编程水平,又能促进大家进行开源分享,何乐不为呢?
开源协议

# 1、协同开发
需求:你创建了一个 github 项目,但现在需要伙伴和你一起开发。
直接向你的伙伴发起邀请即可,具体步骤如下:
① 添加伙伴
个人项目的 Settings ---> Collaborators ---> Add people ---> 搜索伙伴的 github 账号 ---> Add xxx to this respository
② 发起邀请

然后,你的伙伴就可以通过该链接加入你的项目了。
③ 影响
你的伙伴就可以和你一样对 你的 github 项目进行操作了。
# 2、跨团队开发
需求:你在 github 上看到某个项目不错,然后想为这个项目增加一些功能。
① 项目开发
先 fork 别人的项目,然后 clone 到本地。记得新建一个分支 xxx ,然后在这个新建的 xxx 分支上进行开发即可。
② 代码提交
在本地对分支 xxx 中开发完并 push 到自己 fork 的 github 仓库中后,就可以发起 pull request 申请了。
先切换到自己的开发分支 xxx ,然后:

点击 Compare & pull request 后,就可以进行了提交申请、作者间交流环节了 —— 略。
# 拓展:pull request 请求代码审查
先介绍场景:
我(lencamo)创建了项目 git-demo。后来,开发者 bnoond 发现并想为我的项目添加新的功能,现在我要对他的这次 pull request 进行代码审查。
① 查看 request 请求
下面,开发者 bnoond 向我发起了一个 bnoond_dev 分支合并请求:

WARNING
重点记住:
1、pull request 提交的开发者名称:bnoond
2、其开发新功能而创建的新分支名:bnoond_dev
【后面会用到】
② 本地代码审查
# 先将自己的项目clone到本地 git clone https://github.com/Lencamo/git-demo.git # 创建一个和开发者bnoond一样的请求分支bnoon_dev,并切换到该分支 git checkout -b bnoon_dev # 将开发者bnoond请求的分支bnoon_dev分支pull过来 🚩 git pull https://github.com/bnoond/git-demo.git bnoon_dev # 然后在该分支先进行代码审查 # 若有错误,进行修正,并产生新的commit(中途也可以在pull request请求页面与开发者bnoond 进行交流)
Copied!
③ 完成审查
# 完成审查后,将其合并到主分支 git checkout main git merge bnoon_dev # 最后,pull到github远程仓库即可 git push
Copied!
# 3、团队开发
大概就是 New organization、 New team 、Invite member 这些。大家在同一个组织,然后可以在自己的团队中为某个项目贡献代码,并且项目创建者可以为成员指定具有哪些权限。
具体步骤:
略(亲自体会吧!😂)
# 四、gitlab 部署
官方文档:
博文推荐:
# 1、常规方式
① gitlab 安装
找到并点击 Installing GitLab 链接就会跳转到下面的中文安装文档网站上 😂。
- 前期准备
yum install -y curl policycoreutils-python openssh-server perl systemctl enable sshd && systemctl start sshd # 安装Postfix,用来发送通知邮件 yum install postfix systemctl enable postfix && systemctl start postfix
Copied!
# 外网访问 # 方式1(# CentOS7系统中,在防火墙打开场景下,打开HTTP, HTTPS和SSH访问) firewall-cmd --permanent --add-service=http && firewall-cmd --permanent --add-service=https systemctl reload firewalld # 方式2(# 我们购买的服务器大都默认:关闭了防火墙。所以外网访问操作可以省略) systemctl stop firewalld.service systemctl status firewalld
Copied!
- 安装 gitlab 镜像
# 方式1:官方的(可能下载失败) curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-jh # 方式2:使用清华镜像 # ① 新建配置文件 vim /etc/yum.repos.d/gitlab-ce.repo # 内容 [gitlab-ce] name=Gitlab CE Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck=0 enabled=1 # ② 安装 yum makecache yum install gitlab-ce
Copied!
- 配置 gitlab 镜像
GitLab 默认会占用 80、8080 和 9090 端口
external_url 'http://127.0.0.1' unicorn['port'] = 8080 prometheus['listen_address'] = 'localhost:9090'
Copied!
# 1、配置DNS【https://docs.gitlab.cn/omnibus/settings/dns.html】 vim /etc/gitlab/gitlab.rb # 修改内容 external_url 'http://服务器ip:端口号' nginx['listen_port'] = 端口号 # 2、修改密码【https://docs.gitlab.cn/omnibus/installation/index.html#%E8%AE%BE%E7%BD%AE%E5%88%9D%E5%A7%8B%E5%AF%86%E7%A0%81】 # 查看初始化的24小时有效的密码(默认用户名:root) tail -5 /etc/gitlab/initial_root_password # 方式1 # 直接账号登录,然后可视化修改密码 # 方式2 vim /etc/gitlab/gitlab.rb #修改内容 gitlab_rails['initial_root_password'] = '<my_strong_password>'
Copied!
gitlab-ctl reconfigure # 启动gitlab实例 gitlab-ctl restart # 重启服务
Copied!
② gitlab-runner 安装
# 略(后期使用时,再安装) # 视频待看:https://www.bilibili.com/video/BV1YP411N7sT/
Copied!
# 2、docker 方式
# 略(后期学完docker-components时,再部署试试)
Copied!