【 Git学习记录(四)】GitHub远程仓库中基于HTTPS协议的基本操作总结(clone / push / pull)

上一篇中给大家推荐了四款目前主流的代码托管平台。大家自由选择,操作上都是大同小异。我这里就以GitHub为例。

一. GitHub创建远程仓库

有关GitHub的账号注册那些的我就不赘述了。你注册好了登录,然后点击网站右上角的用户下拉列表,选择 Your Repositories 进入你的仓库界面。

在这里插入图片描述
我这里是之前有创建好的仓库(请无视),接着我们再来新建一个远程仓库。点击右上角的绿色按钮New进入下图的仓库创建界面:

在这里插入图片描述
最重要的就是配置好你的仓库名称。后续的选项都决定于你。

左上角就是你的仓库路径,之后是你的分支,默认是在主分支main上。由于我选装了一个README.md文件,他会在仓库内容一栏的下边解析并展示这个md文件。他默认就只有一个你的仓库标题。

在这里插入图片描述

如果你在创建仓库的时候,没有选择添加一个README.md文件,你看到的界面会和我不一样。这个位置它会是一个类似于新手引导的网页。不能说完全没用吧,只能说是我不喜欢那样。🐶

接下来第二章会介绍远程传输文件的协议,对理论知识不感冒的童鞋可直接跳过看第三章

二. 传输协议解析

Git本身支持四种文件传输协议:本地协议,Git协议,HTTPS协议和SSH协议。

  • 本地协议 —— 顾名思义只适用于本地传输,目前来说大都是远程开发和共享代码的天下了,所以本地协议一般不用;
  • Git协议 —— 由于缺乏授权机制且较难架设所以也不常用;

所以,目前的代码托管平台普遍使用HTTPS协议和SSH协议。 在GitHub的仓库中可点击仓库右上角的绿色Code按钮查看,分别会给出你当前仓库基于两种协议的链接地址。

在这里插入图片描述

2.1 使用HTTPS协议的特点

HTTPS协议在当今互联网环境下可谓是应用最广泛的传输协议之一。

在这里插入图片描述

它的使用特点是:

  • 仅需账户密码授权,简单易用;
    对于SSH密钥不熟悉或者电脑上缺少SSH相关程序的人来说,HTTPS协议使用起来是更简单,更熟悉的。
  • HTTP和HTTPS协议的对应端口80和443都属于约定打开的状态;
    现代企业防火墙一般都会默认打开这两个端口,而使用SSH协议还需额外打开22端口。
  • 每次推送都必须重新输入账户密码;
    这个缺点也一直是大家之所以不喜欢使用HTTPS协议的最大原因。不过目前这个问题已经可通过系统设置来解决,例如OSX的Keychain或者Windows的凭证管理器
  • 有利于匿名访问;
    比如克隆(clone)操作时仅需一个仓库的HTPPS链接即可,不需要验证身份。

2.2 使用SSH协议的特点

简单说,SSH是一种用于计算机之间加密登录的网络协议。它采用的是非常安全的公钥加密原理。

在这里插入图片描述
想深入理解SSH协议的公钥加密原理可以参考阮一峰老师的这篇文章:

SSH原理与运用(一):远程登录

这里我们就接着说使用SSH协议的特点:

  • 使用前需要配置SSH-key公钥信息;
    这一步看似挺麻烦,但是也仅需配置这一次,后续直接自动校验登录信息。不像HTTPS协议那样,每次都需要输入账户密码。
  • SSH服务所需的22端口,一般企业防火墙可能会未打开;
    22端口不像80和443那样属于约定打开的状态,这也是使用SSH协议需要配置的一个地方。
  • 无法实现匿名访问;
    使用SSH协议不能实现匿名访问,即使只是克隆的只读操作,也要通过 SSH 校验你的主机的权限。

2.3 总结

由于HTTPS协议本身更简单易用,而且支持匿名访问,所以更适合于开源项目,可以方便被别人克隆和读取(但他没有push权限)。 建议新手先学会使用HTTPS协议的传输方式,也是本文接下来要重点介绍的地方。

而SSH协议在使用之初配置较为麻烦,并且不允许匿名访问,所以它比较适合企业内部项目。 有关SSH协议的具体配置和使用方法,请等待后续博客更新。


三. 回顾 —— 远程仓库

实操之前,先来简单回顾一下 第一节 中总结过的远程仓库的架构图和工作流程图

3.1 本地 + 远程仓库架构

对于个人来说,如果加上远程仓库这部分,那么一个完整的Git仓库架构图应该是下图酱紫的:

在这里插入图片描述

3.2 远程仓库工作模式

很多个这样的个人组合起来就构成了一个完整的团队中的远程仓库工作模式

在这里插入图片描述

四. 基于HTTPS协议的远程仓库操作

完成这一部分操作,最重要的就是拿到你远程仓库的HTTPS协议链接。比如我这里的:

在这里插入图片描述
我们都很清楚,开发中需要有一对互相关联的本地仓库和远程仓库。 现在远程仓库已经准备就绪(第一章里创建),还需要创建本地仓库。

这里就不接着用之前第二节里的本地仓库了。我们来演示另一种本地仓库的创建方式 —— 克隆(clone)远程仓库到本地。

4.1 clone —— 克隆远程仓库内容到本地

克隆(clone)操作通常适用于以下两种场景:

  • 项目伊始的本地仓库的创建;
  • 克隆他人已有的开源仓库资源到本地学习;

我们这里就属于第一种场景啦。接下来就在桌面新建一个文件夹并打开,然后右键进入Git Bash窗口。输入以下命令:

$ git clone https://github.com/zevin-code/Git-demo.git

在这里插入图片描述
这样就很简单快速的创建了对应的本地仓库。这种创建方式也是我们平时开发中使用最多的。继续进入项目文件:

在这里插入图片描述
可以看到Git已经帮我们初始化好了这个本地仓库,而且工作区的内容也和我们远程仓库里的一致。

4.2 push —— 推送本地代码到远程仓库

推送(push)操作顾名思义就是把本地仓库的代码上传到远程仓库。 比如我们可以在本地工作区添加一个新文件:index.html,简单编辑后保存:

在这里插入图片描述

4.2.1 提交本地分支

要仔细看上边回顾里的详细架构图,图中很清楚的标明着:推送(push)操作具体是从本地仓库的分支到远程仓库的分支。

所以在push之前我们还得先提交到本地分支(温故知新):

$ cd Git-demo/
$ git add .
$ git commit -m 'zevin'

在这里插入图片描述

4.2.2 关联远程仓库

接着一步是关联远程仓库。使用到的命令关键字是remote。具体命令为:

$ git remote add origin https://github.com/zevin-code/Git-demo.git

要注意的是:命令里的origin并不是固定的,它相当于是我们自由命名的一个链接名称,不过我们通常约定写作origin。同样我们也可以通过一条命令查看当前本地仓库的关联信息:

$ git remote -v

在这里插入图片描述
细心的童鞋会发现,这里列出的链接有两条,分别指的是push操作和fetch操作的链接地址。我们接下来会讲解push操作,有关fetch操作请看文末的拓展部分。

4.2.3 push推送代码

这些都准备好了,就可以自由的执行推送(push)操作和后续的拉取操作了。赶快去执行:

$ git push origin main

❀ 拓展一下❀

这里还有一个小坑:在GitHub平台上创建的仓库,默认的主分支名为main,并不是master。可以回去看我们当时创建仓库时的截图,很明确给我们提示了:

在这里插入图片描述


执行完之后,系统会弹出了一个GitHub登录的模态框。这就是使用HTTPS协议传输的显著特点:每次上传或拉取操作都需要输入账户密码来验证身份…

在这里插入图片描述
当然,你正常登录即可,等待代码执行完毕~

在这里插入图片描述
来到我们GitHub的远程仓库页面刷新,就可以看到我们添加的index.html文件啦~

在这里插入图片描述


❀ 拓展一下❀

Windows的凭证管理器

有关HTTPS协议传输的每次都需要输入账户密码的痛点,现在已经可以通过系统设置解决了。其实在你第一次使用HTTPS协议传输时,电脑就自动帮你记录了这条凭证信息。后续再次使用,也不会重新登录了。

如果之后有需要更改信息的,windows系统的可以按照以下步骤打开你电脑上的凭证管理器来修改:

在这里插入图片描述


4.3 pull —— 拉取远程仓库的更新项

拉取(pull)操作是用来把远程仓库的更新内容同步到本地的。就比如:

你们团队一起开发一个项目,代码共同维护在同一个远程仓库中。你们各自负责不同的模块。后续需要合并代码或者做模块间测试时,就需要先拿到别人的代码,这个时候就得借助拉取(pull)操作了。

回到我们这个项目上来,我们可以直接在远程仓库页面添加文件,比如这样:

在这里插入图片描述
这样我们远程仓库记录的版本就是最新版本了。接下来使用push操作更新本地仓库:

$ git pull origin main

在这里插入图片描述
执行完代码,你会神奇的发现,在本地仓库的工作区出现了我们新增的page.js文件。到这里,我们就算是完整的进行了一次本地仓库和远程仓库的交互了。👊


❀ 拓展一下❀

其实完成拉取操作共有三种方法:

  • pull命令 —— 既更新本地版本库也更新工作区;
  • fetch命令 —— 只更新本地版本库;
  • merge命令 —— 只更新本地工作区;

也确实可以得出一个结论:pull = fetch + merge。大部分时候pull命令都是适用的,不过你也可以使用fetch + merge的方案,来拆分这个过程。


写在最后

看到这里,有关Git的基本操作就说完了,后续还有分支和SSH协议等进阶操作。有时间再来更新。大家加油!未来可期!


连夜又赶出本篇的姊妹篇,有关SSH协议的具体配置和基本用法。对比服用~药效更佳🐶

【 Git学习记录(五)】GitHub远程仓库中基于SSH协议的基本操作总结(clone / push / pull)

—— zevin 于2020.10.12更新


每一个不曾起舞的日子,都是对生命的辜负!

—— 尼采

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要将GitHub仓库克隆到本地,可以使用以下命令:git clone https://github.com/Joywvii/RepositoryName.git 。 要将本地文件夹初始化为Git版本库并添加远程仓库,可以使用以下命令: git init :初始化版本库 git remote add origin https://github.com/Joywvii/RepositoryName.git :将远程仓库添加为本地仓库远程地址。 要将远程库与本地同步并将远程库的文件添加到本地文件夹,可以使用以下命令: git pull --rebase origin master :获取远程库与本地同步,会将远程库已有的文件添加到本地文件夹。 要将工程文件添加到Git暂存区,可以使用以下命令: git add xxx.py :添加单个文件 git add xxx.py yyy.py :添加多个文件 git add CatelogName :添加文件夹 要将暂存区的内容提交到仓库区,可以使用以下命令: git commit -m "备注" :将暂存区的内容提交到仓库区,-m后面是备注信息。 要将仓库区的内容推送到GitHub远程仓库,可以使用以下命令: git push -u origin master :将仓库区的内容推送到远程仓库GitHub(第一次提交会需要登陆验证)。 要从远程库抓取内容并切换到链接地址的master分支,可以使用以下命令: git fetch [远程库地址别名origin] [远程分支名master] :抓取远程库内容 git checkout origin/master :切换到链接地址(别名)的master分支。 要合并远程库的内容,可以使用以下命令: git merge [远程库地址别名origin/master远程分支名] :合并远程库内容。 解决冲突后,可以使用以下命令将远程库的内容拉取到本地: git pull [远程库地址别名] [远程分支名] :拉取远程库的内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值