一、实验介绍

1.1 实验内容

本次课程讲的是在实验楼的在线环境中,如何使用 Github 去管理在在线环境中使用的代码、配置、资源等实验相关文件,怎样去添加、同步和下拉在远程仓库中的实验文件,以此来维持自身的实验进度。

1.2 实验知识点

SSH 公私钥的基本使用

Github 的基本使用

Git 工具的基本使用

1.3 实验环境

git: Git 管理工具

ssh-keygen:SSH 公私钥管理工具

xfce终端

1.4 适合人群

本课程难度为简单,属于基础级别课程,适合具有 Bash 命令行基础的用户。

二、实验准备

2.1 Github 的使用

讲解如何创建 Github 账户和如何创建远程仓库

2.1.1 创建账号

到 Github 注册 页面中注册,填写用户名、邮箱和密码 01

选择免费服务 02

步骤三可以根据自身喜好勾选或者直接跳过 03

2.1.2 创建远程仓库

创建完账号后,可以开始创建仓库 04

但是这里我们还没有验证邮箱,所以点击开始一个项目会跳出一个页面让我们验证邮箱 05

到邮箱中点击验证链接 06

验证完毕后会跳到之前的 Guide 页面,而且顶部会有一个邮箱验证完毕的提示 07

再次点击开始一个项目,成功进入创建项目页面,填写项目名称和描述,勾选 Public(Private是收费选项) 选项和自动初始化 README.md 勾选框 08

点击创建,至此 Github 账号的创建和远程仓库创建完毕 09

2.2 SSH 公私钥的使用

讲解如何使用 ssh-keygen 生成公私钥

2.2.1 创建密钥

首先在终端敲入,如果一路一直按回车下去,会把密钥文件放置在默认路径,也就是 ~/.ssh/ 路径下,并且会创建一套空密码验证的密钥文件,反之则每一次匹对公私钥都需要再手动输入一次密码,所以这里为了方便使用,建议一路回车下去就行

$ ssh-keygen

输入密钥文件保存路径,建议默认路径,按回车跳过 10

要求输入密码,建议回车使用空密码方便以后的每次连接 11

到选择存放密钥文件的路径下查看,我这里使用的使默认路径,所以使 ~/.ssh/ 路径下,可以看到生成了两个密钥文件,后缀为 .pub 的就是公钥文件,另一个没有后缀的就是私钥文件,可以看到密钥文件创建完毕 12

2.2.2 关联公钥到 Github 账号下

首先复制公钥文件中的内容,也就是 ssh-rsa 开头到 用户名@主机名 这段字符串 13

然后回到 Github, 点击右上角头像的下拉按钮,选择 Settings 14

然后在 Settings 页面中选择左边菜单里的 SSH and GPG keys,然后点击右上角的 New SSH key 按钮,填写 Title 和 Key(在title的位置填写任意的一个名字,然后在key下的文本框中输入id_rsa.pub文件的内容),然后点击 Add SSH key 按钮提交 15

通过返回的页面可以看到公钥与 Github 已经关联完毕.此处输入图片的描述

2.3 安装配置 Git 工具

介绍如何安装与简单的配置 Git 工具

2.3.1 安装

首先在终端下面敲入 git --version, 如果正确回显版本号,则说明已经安装好,如果没有则在终端敲入下面这条命令进行安装

$ sudo apt-get install git -y

2.3.2 配置用户名与邮箱

配置用户名

### 如果想设置为全局生效,添加 --global 参数

$ git config --global user.name "你的用户名"

$ git config --global user.email "你的邮箱"

一、实验步骤

接下来,我们将在具体场景使用 github。

3.1 克隆远程仓库到本地

3.1.1 克隆仓库到本地的个人PC

首先到远程仓库中,点击 Clone or download 按钮,选择使用 Use SSH,然后点击复制链接按钮 16

因为之前已经关联过个人PC的 SSH 公钥,所以直接在命令行中使用以下命令就可以克隆仓库到本地

#命令用法:git clone "你复制的仓库链接"

$ git clone git@github.com:shiyanlou-001/shiyoulou-001.git

查看仓库内容,确定已经克隆到本地 17

3.1.2 克隆仓库到实验楼的在线环境

打开 Xfce 终端,输入以下命令克隆仓库到在线环境中,这里要注意下,因为在线环境环境的 SSH 公钥是没有关联 Github 账户的,所以这里克隆仓库到本地是需要对应上 Github 的用户名与密码的,具体操作如下

在实验环境中打开浏览器,输入远程仓库地址,Github 的URL地址构造是 https://github.com/用户名/仓库名称,而我的用户名和仓库名称都是 shiyanlou-001 所以这里我自己的项目地址为 https://github.com/shiyanlou-001/shiyanlou-001

进入仓库页面后,依旧是点击 Clone or download 按钮,由于我们没有登录 Github 所以这里能复制URL的只有 Use HTTPS 选项,与 Use ssh 选项的区别是每一次同步改动都需要手动输入 Github 的用户名和密码,加上因为是在线环境环境,为了安全性这里也应该就只用 HTTPS 来克隆仓库到本地 18

接下来打开终端,依旧用 git clone 命令克隆仓库到在线环境中,比如我的仓库地址是 https://github.com/shiyanlou-001/shiyanlou-001.git,那么命令就应该是下面这样子

#注意地址用的是你自己的仓库地址

$ git clone https://github.com/shiyanlou-001/shiyanlou-001.git

查看仓库内容,确定已经克隆到在线环境之中 19

3.2 添加实验文件到索引库

3.2.1 添加/修改

要把一个文件添加或者更新内容到本地索引中,可以使用 git add 命令,命令的用法是 git add <文件名|路径名>,具体步骤如下

创建一个新的 txt 文件,文件的内容就写“这是一个新的文件” 20

将这个文件移动到仓库下,并用 git add 命令添加到本地索引库中 21

3.2.2 删除

要把仓库里的文件删除掉,可以使用 git rm 命令,用法是 git rm [-rf] <文件名|路径>,具体步骤如下

这里我们可以用一开始就存在的 README.md 文件来做实验,我们敲入 git rm README.md,然后可以发现文件已经删除了 22

3.2.3 撤销

要把仓库里的改动撤销回克隆下来的状态(注意,如果改动之后执行了提交就无法再撤销,只能从远程仓库重新克隆一份到本地),可以使用 git reset 命令,具体步骤如下

比如我们要把刚才删除的 README.md 文件给还原回来,就可以在仓库目录下,敲入 git reset --hard HEAD 来回退 23

cat 一下,可以发现文件已经恢复了

3.3 提交仓库的改动

在仓库的每一次改动操作之后,推送同步到远程仓库之前,都需要对这一次或这一批次的操作做提交,命令为 git commit,用法是 git commit -m "你的提交备注",只有做好提交动作,才可以开始推送改动到远程仓库同步

因为我之前已经撤销了仓库的改动,这里就重新创建一个新的文件,内容就写“测试”两个字,然后提交改动 25

3.4 推送改动到远程仓库中

当我们提交了仓库的改动后,就可以开始推送改动的内容到远程仓库了,可以使用 git push 命令来推送,用法是 git push [-u] origin <分支名>,分支名默认是 master 具体步骤如下

第一次推送改动可以使用 -u 参数,使用之后会绑定你这一次的仓库分支名,这样的话下一次推送就不需要加上分支名了,如图,使用之后回提示已经绑定好分支,而且因为我们是 HTTPS 协议方式来克隆的仓库,所以每一次同步操作都需要输入用户名和密码 26

然后我们到远程仓库去看一下,可以发现这个文件已经推送上来了,并且对应的行会显示之前提交操作的备注 27

3.5 在新的实验环境中同步之前的实验文件

之前的步骤我们已经同步好远程仓库了,现在我们把在线环境不保存并关闭,然后重新打开实验,理所当然的之前的实验文件都已经不存在了

然后我们依旧去自己的远程仓库地址,把仓库克隆到本地,可以看到之前实验的文件都在

3.6 在本地个人计算机中同步在线环境中的进度

为了方便我们离开在线环境之后在个人机器上做实验,我们可以在最开始的个人机器的本地仓库中同步远程仓库的更新下来

3.6.1 查看仓库改动

首先我们可以通过 git fetch 命令查看有哪一些新改动,用法是在仓库目录下敲入 git fetch origin 29

3.6.2 下拉仓库同步

确认好更新的内容后,下一步就是把更新给同步到本地仓库中了,通过 git pull 命令来实现,具体用法是 git pull origin <分支名>,分支名默认是 master,再查看一下目录,可以看到已经同步好了

四、总结

通过 Github 这样的管理方式,我们就可以保存每一次实验的文件,以此来维持实验进度,下一次打开在线环境,只需要把自己对应的远程仓库克隆到本地,就可以做到接着上一次实验进度展开学习了。 关于 git 的其它操作,参考,Git 实战教程

参考来源:https://www.shiyanlou.com/courses/868

Github 快速上手实战教程的更多相关文章

  1. smarty半小时快速上手入门教程

    http://www.jb51.net/article/56754.htm http://www.yiibai.com/smarty/smarty_functions.html http://www. ...

  2. github上手实践教程

    简介: SSH公私钥的使用 github的使用 git 工具的基本使用 基本步骤: 一.github的使用 1.github账号的创建[官网一步一步创建就行了,这一步骤省略] 2.创建远程仓库: 创建 ...

  3. smarty 快速上手

    smarty半小时快速上手入门教程 投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-10-27我要评论 这篇文章主要介绍了smarty半小时快速上手入门教程,以实例的形 ...

  4. Github Action 快速上手指南

    前言 各位读者,新年快乐,我是过了年匆忙赶回上海努力搬砖的蛮三刀. Github之前更新了一个Action功能(应该是很久以前了),可以实现很多自动化操作.用来替代用户自己设置的自动化脚本(比如:钩子 ...

  5. NHibernate3快速上手教程FluentNHibernate配置与DBHelper

    很多学习NHibernate的新手很容易卡在配置文件这一关,正所谓万事开头难,上手后再配合官方文档就比较容易了. 网上关于配置文件的资料非常多,但由于版本的问题,许多老的教程中都没有明确指出类库的版本 ...

  6. 专为设计师而写的GitHub快速入门教程

    专为设计师而写的GitHub快速入门教程 来源: 伯乐在线 作者:Kevin Li     原文出处: Kevin Li 在互联网行业工作的想必都多多少少听说过GitHub的大名,除了是最大的开源项目 ...

  7. 【RL-TCPnet网络教程】第3章 初学RL-TCPnet的准备工作及其快速上手

    第3章       初学RL-TCPnet的准备工作及其快速上手 俗话说万事开头难,学习一门新的知识,难的往往不是知识本身,而是如何快速上手,需要什么资料和开发环境.一旦上手后,深入的学习就相对容易些 ...

  8. NHibernate3快速上手教程FluentNHibernate配置与DBHelper(已过期,有更好的)

    很多学习NHibernate的新手很容易卡在配置文件这一关,正所谓万事开头难,上手后再配合官方文档就比较容易了. 网上关于配置文件的资料非常多,但由于版本的问题,许多老的教程中都没有明确指出类库的版本 ...

  9. 新浪SAE快速上手教程

     新浪SAE快速上手教程[1]如何免费开通新浪云 2014-07-18 > 新浪SAE快速上手教程[2]如何创建.删除应用 2014-07-24 > 新浪SAE快速上手教程[3]如何上传应 ...

随机推荐

  1. c++ - Linking problems due to symbols with abi::cxx11?

    看错误内容: /data/projects/LipReadingSDKGPU/lib/cwlibs/libLipReading.so: undefined reference to `tensorfl ...

  2. NumPy 数学函数

    NumPy 数学函数 NumPy 包含大量的各种数学运算的函数,包括三角函数,算术运算的函数,复数处理函数等. 三角函数 NumPy 提供了标准的三角函数:sin().cos().tan(). 实例 ...

  3. 关于gcc、make和CMake的区别

    CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要 ...

  4. java 基础之--传统网络编程

    什么是socket ? socket 是连接运行在网络上的两个程序间的双向通讯端点 服务器将某一套接字绑定到一个特定的端口,并通过这一套接字等待和监听客户端的的连接请求 客户端通过这个端口与服务器进行 ...

  5. node.js中对同步,异步,阻塞与非阻塞的理解

    我们都知道javascript是单线程的,node.js是一个基于Chrome V8 引擎的 javascript 运行时环境,注意 node.js 不是一门语言,别搞错了. javascript为什 ...

  6. webpack搭建自己的项目

    使用代理的方式参考地址:http://www.cnblogs.com/wangyongcun/p/7665687.html npm 常用模块 npm init 创建package.json文件 一值回 ...

  7. mysql技术内幕之常规使用

    mysql中:终止语句方法: 1.在语句结尾处,输入分号(:)表示语句到此结束 2.使用\g(意思是go) \G以垂直的方式显示结果,每行显示一个值 数据库:数据库中包含表,对表中数据执行插入,检索, ...

  8. m0n0wall 详细介绍

    pfSense就是基于m0n0wall m0n0wall,挺奇怪的软件名, M0n0wall是基于以性能和稳定性著称的FreeBSD内核的嵌入式的防火墙系统. m0n0wall对硬件要求很低,486芯 ...

  9. iOS.-.cxx_destruct

    -.cxx_destruct 方法: 该方法是由编译器生成的方法. 1. “ARC actually creates a -.cxx_destruct method to handle freeing ...

  10. How do I configure a Wired Ethernet interface

    1.In order to configure the Wired Ethernet interface the MDI must be connected to the PC using the U ...