学会使用Git 和 GitHub

Git 和 GitHub 都是程序员每天都要用到的东西 —— 前者是目前最先进的 版本控制工具,拥有最多的用户,且管理着地球上最庞大的代码仓库;而后者是全球最大 同性交友 代码托管平台、开源社区。

在没有这两个工具时,编程可能是这样的:

  • 哪个同事修改了我的代码 我要🔪了他
  • 我把自己的代码改崩溃了 我选择自杀
  • 电脑崩溃、硬盘损坏、中毒,几万行代码找不到了 😱

但有了他们,一切都不一样了:

  • 同步代码到网络仓库,在家里写好代码上传,回到公司就可以继续写了,而且不怕丢失。
  • 记录每次代码的修改,即使把程序写崩了,也能及时回溯到上一个版本,这在产品更新时也经常使用。
  • 可以多人协作完成项目,每个人的提交都有清晰的记录。

在之后的学习中,你也会不断用到 Git 和 GitHub,把你完成的项目、学习记录,同步在 GitHub 的仓库中。这样做的结果是:你将有一份 非常漂亮的 GitHub 主页,能给你的简历加分很多。

接下来,我们将学习 Git 的基本操作,并注册 GitHub 账户,建立你的第一个代码仓库!

Git 与 GitHub 的历史

Linux 之父林纳斯(Linus) 在 1991 年创建了开源的 Linux 系统,随着 Linux 代码量越来越大,合并志愿者提交的代码已经无法依靠人工完成,所以 林纳斯 选择了商业的管理软件 BitKeeper ,来管理 Linux 的代码版本。

在 2005 年,BitKeeper 公司发现,有 Linux 社区的人试图破解 BitKeeper 软件,他们决定收回 Linux 社区的免费使用权。Linus 对此事调解数周无果,决定自己搞一个。他花了十天时间用 C 语言写好了一个开源的版本控制系统,就是著名的 Git。

(先写出一个操作系统,再用 10 天写出 Git,林纳斯已经不能用大神来形容,只能理解为外星人来技术扶贫的)

2007 年,旧金山的三个年轻人觉得 Git 是个好东西,创建一个公司名字叫 GitHub,第二年上线了使用 Ruby 编写的同名网站。这是一个基于 Git 的免费代码托管网站(有付费服务),十年间迅速蹿红,击败了实力雄厚的 Google Code,成为全世界最受欢迎的代码托管网站。根据 2018 年 10 月的 GitHub 年度报告显示,目前有 3100 万开发者创建了 9600 万个项目仓库,有 210 万企业入驻。

值得一提的是,GitHub 的创始人、CEO —— Wanstrath 是一位大学肄业,自学成才的程序员。

而他大学的专业是英语,相当于我们的“汉语言文学”专业,是一名地地道道的 “文科生”,如今,他的身家可能超过了 10 亿美元,也算是一位自学编程成才的标志人物吧。

 Git 的安装

Git 是一个版本控制系统,可以理解为一个工具,使用之前必须得先下载安装,所以第一步必须要安装。

  • Windows:GitForWindows
  • Mac 系统安装:git-osx-installer
  • Linux:在终端输入命令行安装
  • Debian 系列:apt-get install git
  • Fedora 上:yum install git-core

由于环境中预装了 Git,打开 终端 ,输入 git 可以检测是否安装成功:

如图,如果成功安装了 Git,会显示 Git 的常用命令,以后忘记命令时,也记得输入 git 查看一下~

在 GitHub 上创建仓库

下面,我们通过一次上传 GitHub 的完整操作,实践学习 Git 的常用功能。

首先,申请一个 GitHub 账户。

打开 GitHub,你可以在主页的 banner 上快速注册,或者点击右上角的 Sign up 注册。

下一步,我们选择创建一个免费账户。

下一步,回答两个问题,也可以在最下面选择跳过:

最后,去注册邮箱中接收验证邮件,验证后,自动用新注册账户登录,进入 GitHub 主页。

第二步,我们来新建一个代码仓库。

仓库( repository),可理解为储存代码的场所,点击个人主页的右上角的加号,再点击 New repository,即可创建新的仓库:

然后给仓库命名(比如说 Demo),然后点击 Create Repository,无需考虑本页面的其他选项。

创建后,页面跳转到新建仓库的主页面,第一步成功了!

 添加 SSH 关联授权

2021 年 8 月 GitHub 不再允许使用账户密码操作 GitHub,必须使用 SSH 密钥登陆。 

2022 年 3 月 15 日,GitHub 又通过删除较旧的不安全密钥类型提高了安全性。

接下来,我们可以在系统中创建 SSH 公私钥,并将公钥放到 GitHub 指定位置。如此操作即可生成 GitHub 账户对于当前系统中的 Git 授权。

在终端执行下面命令,每次询问按回车即可。

ssh-keygen -t ed25519-C "你的邮箱地址"

终端执行 ssh-keygen 命令按几次回车生成公私钥,公私钥存放在主目录下的隐藏目录 .ssh 中的两个文件中:

将 ~/.ssh/id_ed25519.pub 文件中的公钥内容复制出来,实验环境中可以使用右侧工具栏中的剪切板复制:

然后在 GitHub 网页上添加公钥:

Title 自定义,把剪切板中的内容粘贴到 Key 中,点击绿色按钮添加 SSH Key 即可:

使用 SSH 的好处主要有两点:

  • 免密码推送,执行 git push 时不再需要输入用户名和密码了;
  • 提高数据传输速度。它不是必须的,比如在课程中挑战环境是不可保存的,一次性的,这种环境就没有必要创建 SSH 了,因为相较好处来说,还是太麻烦了。

克隆 GitHub 上的仓库到本地

现在克隆前面我们在 GitHub 上创建的仓库,使用 git clone + [仓库地址] 命令即可,这是标准的克隆仓库命令。

回到仓库主目录,点击下图所示的绿色按钮,点击紫色框中的 “Use SSH”,然后复制这个链接。

重要的一点:只有使用这种 git 开头的地址克隆仓库,SSH 关联才会起作用。

在实验环境里删除原仓库,使用此链接重新克隆仓库。克隆仓库是需要确认连接,输入 yes 即可:

进入仓库主目录,如下图所示,仓库主目录中有个 .git 隐藏目录,它里面包含了仓库的全部信息,删掉这个目录,仓库就变成普通的目录了。进入到仓库目录中,命令行前缀发生了一些变化,出现了红色的 master ,它就是当前所在的分支名:

当我们在 GitHub 上创建一个仓库时,同时生成了仓库的默认主机名 origin,并创建了默认分支 master。GitHub 可以看成是免费的 Git 服务器,在 GitHub 上创建仓库,会自动生成一个仓库地址,主机就是指代这个仓库,主机名就等于这个仓库地址。克隆一个 GitHub 仓库(也叫远程仓库)到本地,本地仓库则会自动关联到这个远程仓库,执行 git remote -v 命令可以查看本地仓库所关联的远程仓库信息:

Git 要求对本地仓库关联的每个远程主机都必须指定一个主机名(默认为 origin),用于本地仓库识别自己关联的主机,git remote 命令就用于管理本地仓库所关联的主机,一个本地仓库可以关联任意多个主机(即远程仓库)。

克隆远程仓库到本地时,还可以使用 -o 选项修改主机名,在地址后面加上一个字段作为本地仓库的主目录名,举例如下:

另一个在其它 Git 教程中常见的命令 git init ,它会把当前所在目录变成一个本地仓库,因为有 GitHub 的存在,这个命令在我们的生产生活中用到的次数应该是零,除非你想费时费力自己搭建服务器。操作截图如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/86357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Floyd算法基础

弗洛伊德算法(Floyd) 之前介绍了迪杰斯特拉算法(Dijkstra)。具体请看:最短路径算法——简单明了的迪杰斯特拉算法(Dijkstra)。Dijkstra适用于非负权图,并且一次只能从网络中找源点到任何一个节点的最短路径,而Floyd算法的应用更加广泛&#…

【C刷题】day3

一、选择题 1、已知函数的原型是: int fun(char b[10], int *a); ,设定义: char c[10];int d; ,正确的调用语句是( ) A: fun(c,&d); B: fun(c,d); C: fun(&c,&d); D: fun(&c,d); 【答案…

正则表达式新解

文章目录 是什么?正则用法匹配单个字符匹配一组字符其他元字符核心函数 贪婪匹配和非贪婪匹配正则练习 是什么? 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊…

算法leetcode|83. 删除排序链表中的重复元素(rust重拳出击)

文章目录 83. 删除排序链表中的重复元素:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java: 83. 删除排序链表中的重复元素: 给…

ChatGLM GPT原理介绍

图解GPT 除了BERT以外,另一个预训练模型GPT也给NLP领域带来了不少轰动,本节也对GPT做一个详细的讲解。 OpenAI提出的GPT-2模型(https://openai.com/blog/better-language-models/) 能够写出连贯并且高质量的文章,比之前语言模型效果好很多。GPT-2是基于Transformer搭建的,相…

注解,自定义注解

一、什么是注解 二、自定义注解 /*** 自定义注解*/public interface MyAnnotation {String aaa();boolean bbb() default true;String ccc(); }MyAnnotation ( aaa "牛魔王",ccc "sss") public class Test {MyAnnotation ( aaa "aaa",ccc &q…

vue 使用cornerstone解析 .dcm 文件

// 首先下载依赖 npm install --save cornerstone-core cornerstone-math cornerstone-tools hammerjs cornerstone-web-image-loader 下载之后再package.json中可以看到最后图片的依赖// 下面是完成的组件代码 <template><div id"dicom_canvas" refdicom_c…

第75步 时间序列建模实战:多步滚动预测 vol-3(以决策树回归为例)

基于WIN10的64位系统演示 一、写在前面 上两期&#xff0c;我们讲了多步滚动预测的第两种策略&#xff1a; 对于重复的预测值&#xff0c;取平均处理。例如&#xff0c;&#xff08;1,2,3&#xff09;预测出3.9和4.5&#xff0c;&#xff08;2,3,4&#xff09;预测出5.2和6.…

物联网的未来:连接的智能世界

物联网&#xff08;IoT&#xff09;是引领我们走向未来的一项关键技术。它让物品通过互联网进行连接&#xff0c;交流&#xff0c;开创了智能生活新时代。预计到2025年&#xff0c;全球将拥有超过410亿的IoT设备。在对人类生活的每个方面产生影响的同时&#xff0c;物联网也正在…

【ardunio】青少年机器人四级实操代码(2023年9月)

目录 一、题目 &#xff08;一&#xff09;试题原题 &#xff08;二&#xff09;试题解读 1、欢迎区和欢送区范围 &#xff08;1&#xff09;符合习惯 &#xff08;2&#xff09;以门为参考点会有不反应区 &#xff08;3&#xff09;以门为参考点门里门外不反应区不对称…

virtualbox配置ubuntu1804虚拟机相关流程

virtualbox配置ubuntu1804虚拟机相关流程 相关版本能解决的问题安装流程1&#xff1a;新建虚拟机安装流程2&#xff1a;配置虚拟机安装流程3&#xff1a;安装虚拟机系统安装流程4&#xff1a;设置ubuntu 相关版本 virtualbox使用VirtualBox官网下载的6.1.34 r150636 版。ubunt…

深度学习修炼(二)全连接神经网络 | Softmax,交叉熵损失函数 优化AdaGrad,RMSProp等 对抗过拟合 全攻略

文章目录 1 多层感知机&#xff08;全连接神经网络&#xff09;1.1 表示1.2 基本概念1.3 必要组成—激活函数1.4 网络结构设计 2 损失函数2.1 SOFTMAX操作2.2 交叉熵损失函数 3 优化3.1 求导计算过于复杂&#xff1f;3.2 链式法则导致的问题&#xff1f;3.3 梯度下降算法的改进…

利用Python将dataframe格式的所有列的数据类型转换为分类数据类型

一、样例理解 import pandas as pd import numpy as np# 创建测试数据 feature_names [col1 , col2, col3, col4, col5, col6] values np.random.randint(20, size(10,6))dataset pd.DataFrame(data values, columns feature_names)print("转换前的数据为\n",d…

【刷题】2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组真题

蓝桥杯2023年第十四届省赛真题-平方差 - C语言网 (dotcpp.com) 初步想法&#xff0c;x y2 − z2&#xff08;yz)(y-z) 即xa*b&#xff0c;ayz&#xff0c;by-z 2yab 即ab是2的倍数就好了。 即x存在两个因数之和为偶数就能满足条件。 但时间是&#xff08;r-l&#xff09;*x&am…

监督学习和非监督学习, 半监督学习和增强学习

监督学习 给机器的训练数据拥有“标记”或者“答案”&#xff0c; 也就是又有x、又有y 监督的意思是说我们针对给机器的数据进行了正确答案的划分&#xff0c; 这个正确的答案的本身就被称为监督的信息 比如&#xff1a; 生活中很多学习的过程都是监督学习的过程&#xff0c;…

浏览器基本原理

1、浏览器内部组成 我们看到浏览器主要包括&#xff1a; 1个浏览器主进程&#xff1a; 主要负责界面显示&#xff0c;用户交互&#xff0c;子进程管理多个渲染进程&#xff1a;一般浏览器会为每个Tab标签窗口创建一个渲染进程&#xff0c;主要负责将html&#xff0c;css&#…

YOLOv5、YOLOv8改进:C3STR(Swin Transformer)

目录 1.介绍 2. YOLOv5、YOLOv8改进 2.1 common.py配置 2.2 yolo.py配置 2.3 yaml配置文件 1.介绍 视觉领域正在见证从 CNN 到 Transformers 的建模转变&#xff0c;纯 Transformer 架构在主要视频识别基准测试中达到了最高准确度。这些视频模型都建立在 Transformer 层之…

Grafana离线安装部署以及插件安装

Grafana是一个可视化面板&#xff08;Dashboard&#xff09;&#xff0c;有着非常漂亮的图表和布局展示&#xff0c;功能齐全的度量仪表盘和图形编辑器&#xff0c;支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。Grafana主要特性&#xff1a;灵活丰富的图形…

js逆向-某税务网站chinatax分析

目录 一、如图网站二、研究登陆页反爬参数1、datagram参数2、请求接口关系 三、研究详情页反爬参数1、urlyzm与ruuid与x-b3-spanid参数2、los28199参数3、lzkqow23819参数4、jmbw参数 四、最终结果 一、如图网站 二、研究登陆页反爬参数 1、datagram参数 很多接口使用到的dat…

1796_通过vmware打开VirtualBox虚拟机文件

全部学习汇总&#xff1a; GitHub - GreyZhang/toolbox: 常用的工具使用查询&#xff0c;非教程&#xff0c;仅作为自我参考&#xff01; 首先讲vdi格式转换成vmdk格式&#xff0c;以我自己的环境下的信息&#xff0c;处理如下&#xff1a; VBoxManage clonehd "LinuxMin…