Git学习笔记5


  

5 Git 远程版本库

5.1 Git远程版本库

  概述为了方便团队协作,Git一般会使用中央版本库。相对于本地版本库而言,中央版本库都在其它主机上,一般称中央版本库为远程版本库。常用的远程版本库有:GitHub,码云Gitee.

5.2 Github简介

  GitHub是一个面向开源及私有软件项目的托管平台,因为平台只支持Git作为唯一的版本库格式进行托管,故名为GitHub。Hub:中心,所以Git Hub,即Git中心。

5.2.1GitHub的注册与登录

  1)打开GitHub官网,直接就可以看到注册表单
在这里插入图片描述
第二步:是选择个人计划。即选择免费用户还是付费用户。免费用户的仓库都是公开的,任何人都能查看,是默认设置;付费用户可以拥有私人的代码仓库,即别人不能查看你的代码。
在这里插入图片描述
第三步:点击continue后进行,定制你的个人经验。
第一项是:你怎样描述你的编程经验等级。
选项分别是::编程新手,有些经验,非常有经验。
第二项是:你使用GitHub来做什么。
选项分别是:设计,作业,查找;开发,项目管理,其它。
第三项是:对你自己的描述,哪个最接近。
选项分别为:业余爱好者,学生,专业人士,其它。、
在这里插入图片描述

5.2.2 免密登录原理

  Git 的本地仓库要不时的从GitHub上接取数据及向GitHub推送数据,但每次都要通过帐号与密码的身份验证才可访问,非常麻烦。所以要设置免密登录,使用Git的本地版本库可以免密登录并访问GitHub。

  1)免密登录机制Git主机间的通信采用的是SSH协议,即Sercure Shell协议。该协议的免密登录机制要求主机之间采用SSH-key即SSH密钥进行身份验证。SSH密钥包含“公钥与私钥”,所以我们首先要了解什么是“公钥与私钥”,然后还要理解“公钥与私钥”在免密登录中的作用,即免密登录的工作原理。

    A.公钥与私钥对与公钥与私钥要了解以下三点:“公钥与私钥加密”是一种“不对称的加密文式”,是传统的“对称加密方式”的功能的增强。最常见的对称加密方式是:用户名密码方式。公钥与私钥是成对的,即一个公钥对应一个私钥。使用公钥加密后,只能使用私钥进行解密。公钥与私钥的关系:就好比“锁与钥匙”的关系。公钥相当于“锁”,锁是可以被他人看到的,是要发送给别人的,所以称为公钥;私钥相当于“钥匙”,它是不能公开的,只能有公钥发出者保存。
    B.免密码登录的工作原理免密登录在Master/Slave主从集群中使用较多,且多用于Master主机免密登录访问Slave主机,所以对于免密登录原理的分析就以Master/Slave为例。对于免密登录的机制,主要由两部分构成:构建与验证。
在这里插入图片描述
免密登录构建:
1、Master生成一对密钥:公钥与私钥,保存到Master本地。
2、Master将公然及用户信息(用户名,密码等)发送给Slave,并将公钥及用户信息保存到slave本地。
免密登录验证:
1、Master向Slave发送连接请求,包含Master的用户信息。
2、Slave从本地文件中查找是否存在连接中包含的用户信息。若不存在:则拒绝访问,若存在:可以访问
3、Slave将加密后的随机字符串发送给Master.
4、Master将加密后的附页字符串使用私钥进行解密。
5、Master将解密后的字符串给发送给SlaveSlave将接收到的字符串与本地未加密的字符串进行比较,相同则可以访问,不同则被拒绝。

5.2.3 设置本地库对GitHub的免密登录

  此时要设置本地库免密登录GitHub,即这里的本地版本库相当于前面的Master,而GitHub则相当于slave。所以,密钥对应由本地版本版本库生成,而GitHub中只需要保存公钥即可。
1)本地库主机的设置
A.查看密钥文件由于生成的密钥存放在本地版本库主机的当前用户主目录下的隐藏目录.ssh下面两个隐藏文件中,这两个文件分别是id_sra与id_sra.pub。其中id_sra中存放的是私钥,id_sra.pub中存放的是公钥。所以生成密钥前首先要看本地版本库主机的当前用户主目录,确认有没有.ssh目录。
在这里插入图片描述
B.本地库生成密钥在本地版本库主机运行ssh-keygen命令,生成SSH密钥
在这里插入图片描述
  C.再次查看密钥文件再次查看本地版本库主机的当前用户主目录时,发现已经生成了.ssh目录,查看该目录其下也生成了id_rsa与id_rsa.pub文件。说明SSH密钥生成成功。
在这里插入图片描述

2)GitHub设置
登录GitHub官网,打开setting设置页面
A.打开公钥填写页面
在这里插入图片描述
B.复制公钥在本地库打开当前用户主目录下的.ssh/.id_rsa.pub文件,将公钥进行复制
在这里插入图片描述
C.填写公钥
在这里插入图片描述
  在Title中要填入该key的名称,可以随意定义,例如,这是CHeng的主机上的Git要连接该GitHub,所以可以命名为Cheng’sComputer。将复制好的公钥粘贴到key文本框中。点击Add SSH key后,即可看到GitHub中存放到手公钥信息。
在这里插入图片描述

5.2.4 创建GitHub远程空版本库

1)打开创建库页面登录GitHub官网,打开New repository页面
在这里插入图片描述
2)填写创建库表单
  仅填入远程版本库名称即可Create repository,其它保持默认。为了便于记忆,一般情况下远程版本库名称与本地版本库名称设置相同。
在这里插入图片描述
3)进入空版本库页面
  点击create repository后,即可进入远程版本库页面。远程版本库创建好之后,默认Git间的连接采用的是Https协议。较之SSH协议,HTTPS协议数据传输速度慢,且无法实现免密登录,即每次连接均需要输入用户名和密码,所以生产环境下一般采用的是SSH协议。所以首先要点击SSH,其后显示的就是远程版本库的访问地址。
在这里插入图片描述
远程版本库创建好之后,由于版本库仍然为空的,所以GitHub给出了三条建议:
1.使用命令行创建一个新的仓库。即删除这个空的版本库再创建一个新的版本库。
2.使用命令行推送一个新的仓库。即将本地版本库的内容push到远程版本库。
3.从其它版本库中导入代码

5.2.5 本地库内容push到远程库

1.命令解析
使用第二点建议,从本地库中推送已存在的版本库内容。只需要本地库中运行给出的两条命令即可。
在这里插入图片描述
  git remote add 命令的意思是:为指定一个远程版本库命名一个本地名称。这里的远程版本库为git@github.com:ChengJson/project1.git,为其起的本地名称为origin,即起源。其中远程版本库的git@表示以git用户访问,而仓库的具体地址为github.com主机中的ChengJson目录下的project1.git。远程版本库目录一般以.git结尾。

git push命令用法:
  ◼git push origin master:将本地版本库中master分支推送到origin远程库。
  ◼git push origin:将本地版本库中当前分支推送到origin远程版本库。
  ◼git push –u origin:将本地版本库master分支推送到origin远程版本库,并将origin设置为默认的远程库,即以后所有git push就不用再指定远程版本库了。
  ◼git push:将本地版本库中当前分支推送到默认远程片库。

2.命令执行
  在Git Bash的本地版本库目录中远程以上两条命令。在第一次连接GitHub时本地库的Git系统会给出提示,GitHub站点主机的真实性不能确定,RSA密钥指纹是xxx,你确定要连接吗?输入yes。然后再给出一个警告,永久性的添加GitHub站点到已知主机列表。以后再连接就不会出现该警告
在这里插入图片描述
3.查看结果
在这里插入图片描述

5.2.6 从远程库clone到本地库

(一)创建本地库存放目录

  在要克隆远程版本库的本地库主机中创建要存放本地库的目录。在d盘的D:\soft\Git\git\目录下创建目录repositories2,将来用于克隆远程版本库的project1版本库。注意,project1版本库目录不用创建,它分从远程库中克隆出来

(二)复制远程库地址打开并登录到GitHub,在登录之后可以看到远程仓库,选择我们要克隆的仓库,选中之后
在这里插入图片描述
(三)运行克隆命令
  在本地库主机运行Git Bash命令,首先进入到将要存放本地库的D:\soft\Git\git\repositories2目录,然后再运行克隆命令。命令运行完毕,在当前目录下就会出现克隆自GitHub版本库,即本地库
在这里插入图片描述

5.2.7 从远程库pull内容到本地库

(一)修改内容后commit
首先要进入到repositories2的本库版本库目录中,然后插入一行新的内容在hello.html,最后再将修改的内容add与commit提交到本地版本库

在这里插入图片描述
这里的commit 应该是 append seven line into hello.html

(二)repositories2将修改的内容push到远程库

repositories2直接运行git push命令
在这里插入图片描述
  但是,需要注意的是:若repositories2与repositories不是同一台主机,这里运行的命令应该是以下两条命令。

git remote add origin git@github.com:ChengJson/project1.git
git push –u origin master

由于repositories2与repositories是同一台主机模拟的,无需也不能再为该远程版本库再指定本地名称了,也无需再指定git push命令的默认远程库了。

(三)repositories从远程库pull到本地库

首先进入到repositories的本地版本库目录,然后直接运行git pull命令
在这里插入图片描述
运行该命令的前提同样是前面指定过默认远程库。本例指定的默认的远程库为origin。该命令等价于

git pull origin master

git pull命令常见的用法:
⚫git pull origin master:将远程库origin的master分支拉取到本地库与本库库的master分支合并。
⚫git pull origin master:dev 将远程库origin的master分支拉取到本地并与本的dev分支合并
⚫git pull:从默认远程库的拉取本地库当前分支内容,并与本地库当前分支合并。

5.2.8 查看本地的远程库信息

git reomote

该命令可列举出当前本地版本库可操作的远程版本库名称
git remote –v:该命令可以显示出更为详细的信息:远程库地址及本地库可执行的操作权限
在这里插入图片描述

5.2.9 删除本地的远程库信息

命令:git git

git remote rm 远程库名称

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值