《四》Git 中的远程仓库
真实项目通常是多人开发的,因此需要将管理的代码共享到远程仓库中。
远程仓库通常是搭建在某一个服务器上的。可以在自己的服务器上搭建一个 Giit 服务器;也可以使用第三方的 Git 服务器,例如:GitHub、GitLab、Gitee 等。
GitHub 既可以建公有仓库,也可以建私有仓库。公有仓库任何人都可以查看和克隆,但是无法进行 push 操作。
一般情况下,开源项目会放到 gitHub 上,公司的私有项目会放到 gitLab 上。
开源项目可以选择开源协议来规定使用者的权利和责任。常见的开源协议有以下几种,其中 MIT 使用最多。
创建远程仓库(以 GitHub 为例):
登陆 GitHub,点击右上角的 New repository
按钮(或者其他新建仓库的按钮),进入创建仓库的页面创建一个远程仓库。
创建远程仓库,之前会默认创建一个 master 分支,现在是 main 分支。
给电脑中安装 Git,git init
时默认会创建一个 master 分支,但是有选项可以输入默认创建的分支名。
远程仓库的验证:
对远程仓库进行操作需要进行验证,远程仓库的验证有两种方式:基于 HTTP 的凭证和基于 SSH 的秘钥。
基于 HTTP 的凭证:
因为 HTTP 本身是无状态的连接,因此,基于 HTTP 凭证的方式,每一次对远程仓库的操作都需要使用用户名和密码进行校验。
Git 有一个凭证系统 Git Crediential
,可以避免每次操作都弹框询问。有以下选项:
-
默认不缓存:每一次连接都会询问用户名和密码。
-
cache 模式:会将凭证存放在内存中15 分钟,之后访问远程仓库将会默认被携带上。
-
store 模式:会将凭证以明文的形式永久存放在磁盘中,之后访问远程仓库将会默认被携带上。
-
如果是 Mac,还有一种 osxkeychain 模式,会将凭证以加密的形式缓存到系统用户的钥匙串中,之后访问远程仓库将会默认被携带上。
-
如果是 Windows,安装 Git 时,会有个选项默认安装一个叫做
Git Crediential Manager for Windows
的辅助工具,会将凭证以加密的形式存储起来,之后访问远程仓库将会默认被携带上。可以通过
git config crediential.helper
来查看是否已经使用了这个辅助工具来管理凭证。
可以在
控制面板 --> 用户账户 --> 凭证管理器 --> Windows 凭证
中将其删除。
基于 SSH 的秘钥:
SSH:Secure Shell,安全外壳协议。是一种加密的网络传输协议,可以在不安全的网络中为网络服务提供安全的传输环境。SSH 以非对称加密的方式实现身份验证(例如:有一种方法是使用自动生成的公钥和私钥对来简单地加密网络连接,最后使用密码认证进行登录;另一种方法是人工生成一对公钥和私钥,通过生成的秘钥进行认证,公钥需要放在待访问的服务器中,对应的私钥需要用户自行保管,这样就可以在不输入密码的情况下登录)。
- 生成公钥和私钥:
cd ~
进入用户的家目录,执行ssh-keygen -t rsa -C 【注册 GitHub 的邮箱】
命令生成 SSH 的秘钥。 - 复制公钥:
cd .ssh
进入 SSH 目录,会看到生成了id_rsa.pub
公钥和id_rsa
私钥文件,打开id_rsa.pub
文件复制其中的内容。 - 将公钥放到远程服务器中:登录 GitHub,找到
Settings -> SSH and GPG keys
,将复制的公钥的内容粘贴到 Key 中即可。
关联远程仓库:
git remote add 【自定义的远程仓库别名】 【远程仓库地址】
:给本地仓库关联远程仓库。
自定义的远程仓库别名默认是 origin。
一个本地仓库可以关联多个远程仓库。
通过git remote
可以查看本地仓库关联的远程仓库。
- 进入本地仓库所在目录的终端,执行
git remote add origin https://github.com/huadangmao/test.git
,为本地仓库关联https://github.com/huadangmao/test.git
这个远程仓库并为其指定一个简短的别名origin
。
克隆远程仓库:
git clone 【远程仓库地址】
:将远程仓库克隆到本地。
- 进入想要存放项目的目录下的终端,执行
git clone https://github.com/huadangmao/test.git
克隆远程仓库到本地。
团队协作和跨团队协作:
团队协作:
示例:公司内部协作开发。
跨团队协作:
示例:有一个公司外部的人员 A 协助临时开发一个功能。他可以 fork 一份公司的远程库代码到自己的远程库;开发完成之后发起一个 pull request;公司主管人员审核之后,就可以 merge 到公司的远程库中了。
- A 访问公司的远程仓库地址,点击 Fork,就成功地 Fork 了一份公司的远程库代码到自己的远程库。
- A 克隆远程库代码到本地,进行修改之后 add commoit 到本地库,再 push 到自己的远程仓库。
- A 在自己的远程库中提交一个 pull request。
- 公司主管查看公司远程仓库中的 pull request,合并代码。
5. 此时公司主管再去 code 查看代码,即可看到更新的内容。
更多推荐
所有评论(0)