第07节_远程仓库

1.Github

1.1 什么是开源

2022-11-09_233318

1.2 开源许可协议

开源并不意味着完全没有限制,为了限制使用者的使用范围和保护作者的权利,每个开源项目都应该遵守开源许可协议( Open Source License )。

常见的 5 种开源许可协议

BSD(Berkeley Software Distribution)

Apache Licence 2.0

GPL(GNU General Public License)

  • 具有传染性的一种开源协议,不允许修改后和衍生的代码做为闭源的商业软件发布和销售

  • 使用 GPL 的最著名的软件项目是:Linux

LGPL(GNU Lesser General Public License)

MIT(Massachusetts Institute of Technology, MIT)

  • 是目前限制最少的协议,唯一的条件:在修改后的代码或者发行包中,必须包含原作者的许可信息

  • 使用 MIT 的软件项目有:jquery、Node.js

关于更多开源许可协议的介绍,可以参考博客:各种开源协议介绍open in new window

1.3 为什么要拥抱开源

开源的核心思想是“我为人人,人人为我”,人们越来越喜欢开源大致是出于以下 3 个原因:

① 开源给使用者更多的控制权

② 开源让学习变得容易

③ 开源才有真正的安全

开源是软件开发领域的大趋势,拥抱开源就像站在了巨人的肩膀上,不用自己重复造轮子,让开发越来越容易。

1.4 开源项目托管平台

专门用于免费存放开源项目源代码的网站,叫做开源项目托管平台。目前世界上比较出名的开源项目托管平台

主要有以下 3 个:

  • Github(全球最牛的开源项目托管平台,没有之一)

  • Gitlab(对代码私有性支持较好,因此企业用户较多)

  • Gitee(又叫做码云,是国产的开源项目托管平台。访问速度快、纯中文界面、使用友好)

注意:以上 3 个开源项目托管平台,只能托管以 Git 管理的项目源代码,因此,它们的名字都以 Git 开头。

2.远程仓库

2.1 新建空白远程仓库

2022-11-09_234459

2.2 新建空白远程仓库成功

2022-11-09_234537

2.3 远程仓库的两种访问方式

Github 上的远程仓库,有两种访问方式,分别是 HTTPS 和 SSH。它们的区别是:

  • HTTPS:零配置;但是每次访问仓库时,需要重复输入 Github 的账号和密码才能访问成功

  • SSH:需要进行额外的配置;但是配置成功后,每次访问仓库时,不需重复输入 Github 的账号和密码

注意:在实际开发中,推荐使用 SSH 的方式访问远程仓库。

2.4 基于 HTTPS 将本地仓库上传到 Github

2022-11-09_234655

2.5 SSH key

SSH key 的作用:实现本地仓库和 Github 之间免登录的加密数据传输。

SSH key 的好处:免登录身份认证、数据加密传输。

SSH key 由两部分组成,分别是:

  • id_rsa(私钥文件,存放于客户端的电脑中即可)

  • id_rsa.pub(公钥文件,需要配置到 Github 中)

2.6 生成 SSH key

① 打开 Git Bash

② 粘贴如下的命令,并将 your_email@example.com 替换为注册 Github 账号时填写的邮箱:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

③ 连续敲击 3 次回车,即可在 C:\Users\用户名文件夹.ssh 目录中生成 id_rsa 和 id_rsa.pub 两个文件

2.7 配置 SSH key

① 使用记事本打开 id_rsa.pub 文件,复制里面的文本内容

② 在浏览器中登录 Github,点击头像 -> Settings -> SSH and GPG Keys -> New SSH key

③ 将 id_rsa.pub 文件中的内容,粘贴到 Key 对应的文本框中

④ 在 Title 文本框中任意填写一个名称,来标识这个 Key 从何而来

2.8 检测 Github 的 SSH key 是否配置成功

打开 Git Bash,输入如下的命令并回车执行:

ssh -T git@github.com

上述的命令执行成功后,可能会看到如下的提示消息:

2022-11-09_235255

输入 yes 之后,如果能看到类似于下面的提示消息,证明 SSH key 已经配置成功了:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

2.9 基于 SSH 将本地仓库上传到 Github

2022-11-09_235353

3.团队内协作

3.1 在本地创建远程库地址别名

远程库地址太长了,我们需要在本地创建一个简短的别名便于引用

①先复制远程库地址

images

②在本地创建远程库地址别名

查看当前所有远程地址别名:git remote -v

创建新的远程地址别名:git remote add 别名 远程地址

images

3.2 推送

git push 别名 分支

images

推送过程中需要填写账号密码

images

推送后可以刷新远程库所在页面,查看我们上传的文件

images

3.3 克隆

团队其他人想拿到整个库就可以使用克隆功能。命令格式是:git clone 远程库地址

images

克隆命令有三个效果:

  • 创建并初始化本地库,相当于执行了git init命令
  • 创建远程地址别名,相当于执行了git remote add命令
  • 把远程库文件下载到本地

3.4 使用未加入团队的账号执行推送操作

images

3.5 邀请团队成员加入远程库

①仓库主人发起邀请

images


images


images


images


images


images


②被邀请人接受邀请

被邀请人登录自己的码云账号,查看私信通知

images


images


images

3.6 加入团队后再尝试推送

images


images

3.7 通过拉取操作查看别人的修改

images

4.跨团队协作

4.1 团队外:fork远程库

images


images


images

images

4.2 团队外:在fork仓库中修改代码

如果要修改的代码很多,可以先clone到本地,修改完成后再push。如果修改不多可以直接在线修改。

images

4.3 团队外:修改完成后发起pull request

images


images


images

创建后效果如下:

images

4.4 团队内:审核代码

首先审核者通过站内通知获知pull request请求

images


images


images

4.5 团队内:合并代码

需要团队内确认审核代码没有问题,并且有专人测试通过,然后依次点击审核通过、测试通过按钮。

images


images


images


images


images