Git和Github的使用

前言

我们知道我们的文件在需要管理的时候,如果出现崩溃或者文件丢失的情况的时候,就会对管理和工作造成非常严重的影响。而这个时候,我们就需要用到git和github来管理我们所使用的项目,可以帮助管理我们的项目版本。那么,就让我们来了解git和github吧。


一、版本控制

关于版本控制,当我们需要给文件去设置,设计不同的版本,最初的想法可能就是不停的创建文件,复制粘贴。但是这个过程明显是存在缺点的:

Git和Github的使用_第1张图片

因此,我们就需要通过一些方法来方便管理这些文件。

 版本控制软件

版本控制软件是什么呢?我们来了解一下:

Git和Github的使用_第2张图片

那么,用版本控制软件有什么好处呢?有一下这些好处:

Git和Github的使用_第3张图片

 知道了版本控制软件的好处之后,我们现在所知道的版本控制软件都有些什么呢?

  1. 分布式版本控制系统:联网运行,支持多人协作开发;性能优秀、用户体颚
  2. 集中化的版本控制系统:联网运行,支持多人协作开发;性能差、用户体验不好
  3. 本地版本控制系统:单机运行,使维护文件版本的操作工具化

 让我们分别看看这些控制系统的情况:

本地版本控制系统

Git和Github的使用_第4张图片

集中化的版本控制系统

Git和Github的使用_第5张图片

分布式版本控制系统

Git和Github的使用_第6张图片

我们可以看到,最优秀的系统,就是Git,那么接下来,就让我们来学习Git。


二、Git基础

Git是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。
特点:项目越大越复杂,协同开发者越多,越能体现出Git的高性能和高可用性

Git的特性

Git之所以快速和高效,主要依赖于它的如下两个特性:

  • 直接记录快照,而非差异比较
  • 近乎所有操作都是本地执行

 SVN的差异比较

传统的版本控制系统(例如SVN)是基于差异的版本控制,它们存储的是一组基本文件和每个文件随时间逐步累积的差异。

Git和Github的使用_第7张图片

Git的记录快照

 Git快照是在原有文件版本的基础上重新生成一份新的文件,类似于备份。为了效率,如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。

Git和Github的使用_第8张图片

 近乎所有操作都是本地执行

Git和Github的使用_第9张图片

Git中的三个区域和三种状态

使用Git管理的项目,拥有三个区域,分别是工作区、暂存区、Git仓库。

Git和Github的使用_第10张图片

git也有对应三个区域的三种状态: 

Git和Github的使用_第11张图片

 注意:

  • 工作区的文件被修改了,但还没有放到暂存区,就是已修改状态。
  • 如果文件已修改并放入暂存区,就属于已暂存状态。
  • 如果Git仓库中保存着特定版本的文件,就属于已提交状态。

 基本的 Git工作流程

基本的Git工作流程如下:

  • 在工作区中修改文件
  • 将你想要下次提交的更改进行暂存
  • 提交更新,找到暂存区的文件,将快照永久性存储到Git 仓库

Git和Github的使用_第12张图片


 三、安装并配置GIT

在开始使用Git管理项目的版本之前,需要将它安装到计算机上。可以使用浏览器访问如下的网址,根据自己的操作系统,选择下载对应的Git安装包:git

这里需要注意一点:因为git属于外网的网站,如果需要去下载安装包会需要很多的时间,此时你可以选择用加速器或者其他的资源路径前往下载。

 这里有安装git的教程

配置用户信息

这里之后的操作,在我们安装了Git之后,找到对应的文件夹右键操作:

Git和Github的使用_第13张图片  这里只需要我们点击git bash here 就可以打开面板输入下面的指令

安装完Git 之后,要做的第一件事就是设置自己的用户名和邮件地址。因为通过Git对项目进行版本管理的时候,Git需要使用这些基本信息,来记录是谁对项目进行了操作:

Git和Github的使用_第14张图片

 Git的全局配置文件

通过git config --global user.name和 git config --global user.email 配置的用户名和邮箱地址,会被写入到C:/Users/用户名文件夹l.gitconfig文件中。这个文件是Git的全局配置文件,配置一次即可永久生效。

Git和Github的使用_第15张图片

 检查配置信息

 除了使用记事本查看全局的配置信息之外,还可以运行如下的终端命令,快速的查看Git的全局配置信息

Git和Github的使用_第16张图片

 获取帮助信息

我们可以通过下图的方式来获得帮助信息:

Git和Github的使用_第17张图片

 到这里安装之后的操作就结束了,接下来就是关于git的基础操作内容。


 四、GIT基本操作

git的操作有很多,让我们一起来看看吧。

获取GIT仓库的两种方式

  • 将尚未进行版本控制的本地目录转换为Git仓库
  • 从其它服务器克隆一个已存在的Git仓库

以上两种方式都能够在自己的电脑上得到一个可用的Git仓库

在现有目录中初始化仓库

Git和Github的使用_第18张图片

 工作区中文件的4种状态

工作区中的每一个文件可能有4种状态,这四种状态共分为两大类,如图所示:

Git和Github的使用_第19张图片

 检查文件的状态

在状态报告中可以看到新建的 index.html文件出现在Untracked files(未跟踪的文件)下面。
未跟踪的文件意味着Git在之前的快照(提交)中没有这些文件;Git 不会自动将之纳入跟踪范围,除非明确地告诉它“我需要使用Git跟踪管理该文件”。

Git和Github的使用_第20张图片

 以精简的方式显示文件状态

使用git status输出的状态报告很详细,但有些繁琐。如果希望以精简的方式显示文件的状态,可以使用如下两条完全等价的命令,其中-s是--short的简写形式:

Git和Github的使用_第21张图片

 跟踪新文件

Git和Github的使用_第22张图片

提交更新

Git和Github的使用_第23张图片

 Git和Github的使用_第24张图片

对已提交的文件进行修改

Git和Github的使用_第25张图片

暂存已修改的文件

Git和Github的使用_第26张图片

 提交已暂存的文件

Git和Github的使用_第27张图片

撤销对文件的修改

Git和Github的使用_第28张图片

向暂存区中一次性添加多个文件

Git和Github的使用_第29张图片

 注意 .号相当于选择了多个文件的意思,下面知识点也可以用同样的方法选择多个文件移除

取消暂存的文件

Git和Github的使用_第30张图片

跳过使用暂存区域

Git标准的工作流程是工作区→暂存区→Git仓库,但有时候这么做略显繁琐,此时可以跳过暂存区,直接将工作区中的修改提交到Git仓库,这时候Git工作的流程简化为了工作区→Git仓库
Git提供了一个跳过使用暂存区域的方式,只要在提交的时候,给git commit加上-a选项,Git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add步骤:

Git和Github的使用_第31张图片

移除文件

Git和Github的使用_第32张图片

忽略文件

一般我们总会有些文件无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表。在这种情况下,我们可以创建一个名为.gitignore 的配置文件,列出要忽略的文件的匹配模式。
文件.gitignore 的格式规范如下:

  • 以#开头的是注释
  • 以/结尾的是目录
  • 以/开头防止递归
  • 以!开头表示取反

可以使用alob模式进行文件和文件夹的匹配(alob指简化了的正则表达式)

glob模式

Git和Github的使用_第33张图片

.gitignore文件的例子

Git和Github的使用_第34张图片

查看提交历史

如果希望回顾项目的提交历史,可以使用git log这个简单且有效的命令。

Git和Github的使用_第35张图片

回退到指定的版本

Git和Github的使用_第36张图片

总结

Git和Github的使用_第37张图片


五、Github

在了解Github之前,我们先来了解一下什么是开源。

开源

Git和Github的使用_第38张图片

什么是开源许可协议

开源并不意味着完全没有限制,为了限制使用者的使用范围和保护作者的权利,每个开源项目都应该遵守开源许可协议( Open Source License ) 。

常见的5种开源许可协议

Git和Github的使用_第39张图片

 这里需要注意,最重要的开源协议就是GPL和MIT,这两个更加常见,使用更多。

为什么要拥抱开源

  • 开源的核心思想是“我为人人,人人为我”,人们越来越喜欢开源大致是出于以下3个原因:
  • 开源给使用者更多的控制权
  • 开源让学习变得容易
  • 开源才有真正的安全
  • 开源是软件开发领域的大趋势,拥抱开源就像站在了巨人的肩膀上,不用自己重复造轮子,让开发越来越容易。

以上理论以了解为主)

开源项目托管平台

专门用于免费存放开源项目源代码的网站,叫做开源项目托管平台。目前世界上比较出名的开源项目托管平台主要有以下3个:

  • Github(全球最牛的开源项目托管平台,没有之一)
  • Gitlab(对代码私有性支持较好,因此企业用户较多)
  • Gitee (又叫做码云,是国产的开源项目托管平台。访问速度快、纯中文界面、使用友好)

注意:以上3个开源项目托管平台,只能托管以Git管理的项目源代码,因此,它们的名字都以Git开头。

了解了开源下,最合适使用的项目托管平台是Github,那么就好好学习Github的使用吧。

什么是Github

Github是全球最大的开源项目托管平台。因为只支持Git作为唯一的版本控制工具,故名GitHub。在Github 中,你可以:

  • 关注自己喜欢的开源项目,为其点赞打call
  • 为自己喜欢的开源项目做贡献( Pull Request)
  • 和开源项目的作者讨论Bug和提需求( lssues)
  • 把喜欢的项目复制一份作为自己的项目进行修改(Fork)
  • 创建属于自己的开源项目等等

注册Github账号的流程

访问Github的官网首页

点击“Sign up”按钮跳转到注册页面,填写可用的用户名、邮箱、密码。

这里需要注意,Github是外网地址,那么要用加速器的事情你也明白,不用的话不仅很慢,很可能会卡在注册界面。如果有别的方法的话,可以自己去尝试。

注册完了之后我们就可以开始使用Github了

新建空白远程仓库

请看图解:

Git和Github的使用_第40张图片

 按图示方法,点击创造你的远程仓库。这个界面在你完成账号注册之后,只要登录就会显示这个界面。

远程仓库的两种访问方式

Github上的远程仓库,有两种访问方式,分别是 HTTPS和SSH。它们的区别是:

  • HTTPS:零配置;但是每次访问仓库时,需要重复输入Github的账号和密码才能访问成功
  • SSH:需要进行额外的配置;但是配置成功后,每次访问仓库时,不需重复输入Github的账号和密码

注意:在实际开发中,推荐使用SSH的方式访问远程仓库。还需要注意的是,虽然HTTPS的使用,以前只需要输入账号和密码就可以了,但是在前年就发布了无法使用密码的方式来访问,改成了账号和输入token(password)的方式来访问,麻烦程度超过了SSH。

这里提供使用token的方法介绍:如何使用token

基于HTTPS将本地仓库上传到Github

Git和Github的使用_第41张图片

当我们的文件已经提交过一次之后,如果我们还需要提交命令,那么使用git push就可以继续提交

这里需要注意,在你执行下面的代码的时候,因为时代的更新,会有这么一段代码

git branch -M main  Github把原本的master去掉了

那么是怎么回事呢?这里有一篇文章可以告诉我们:Github 太狠了,居然把 "master" 干掉了!

但是这个过程并不影响我们运行。重点是如果我们按照教程里面的方式git bash here打开面板输入的时候,会提示你输入用户名和密码,这个时候输入的我们注册的账号和密码是不行的,要看上面的token的使用方法来输入才能正常的运行。

SSH key

SSH key的作用:实现本地仓库和Github之间免登录的加密数据传输。sSH key的好处:免登录身份认证、数据加密传输。
SSH key由两部分组成,分别是:

  • id_rsa(私钥文件,存放于客户端的电脑中即可)
  • id rsa.pub (公钥文件,需要配置到Github 中)

生成SSH key

  • 打开Git Bash
  • 粘贴如下的命令,并将[email protected]替换为注册Github账号时填写的邮箱:
  • ssh-keygen -t rsa -C "[email protected]"
  • 连续敲击3次回车,即可在C:\Users\用户名文件夹\.ssh目录中生成 id_rsa和id_rsa.pub两个文件

配置 SSH key

  • 使用记事本打开id_rsa.pub文件,复制里面的文本内容
  • 在浏览器中登录Github,点击头像->Settings -> SSH and GPG Keys -> New SSH key
  • 将id_rsa.pub文件中的内容,粘贴到Key对应的文本框中
  • 在Title文本框中任意填写一个名称,来标识这个Key 从何而来

检测Github的SSH key是否配置成功

Git和Github的使用_第42张图片

基于SSH将本地仓库上传到Github

Git和Github的使用_第43张图片

 和HTTPS的方式是一样的,但是更加方便。

将远程仓库克隆到本地

Git和Github的使用_第44张图片

 这里附上我的截图来更加细致的说明一下:

Git和Github的使用_第45张图片

 上方所说的位置复制链接地址,添加在git clone 的后面,就可以实现了。


六、分支

分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。
如果两个平行宇宙互不干扰,那对现在的你也没啥影响。
不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN

其实,分支在实际开发中的作用,就是在进行多人协作开发的时候,为了防止互相干扰,提高协同开发的体验,建议每个开发者都基于分支进行项目功能的开发,例如:

Git和Github的使用_第46张图片

master主分支

在初始化本地Git仓库的时候,Git默认已经帮我们创建了一个名字叫做 master的分支。通常我们把这个master 分支叫做主分支。

注意:这里和上述的内容说明了,其实master已经被切换为了main,但是代码大体上是没有问题的,只需要吧master切换成main就可以了。

功能分支

由于程序员不能直接在master分支上进行功能的开发,所以就有了功能分支的概念
功能分支指的是专门用来开发新功能的分支,它是临时从master主分支上分叉出来的,当新功能开发且测试完毕后,最终需要合并到master主分支上,如图所示:

Git和Github的使用_第47张图片

查看分支列表

Git和Github的使用_第48张图片

创建新分支

使用如下的命令,可以基于当前分支,创建一个新的分支,此时,新分支中的代码和当前分支完全一样:

Git和Github的使用_第49张图片

切换分支

使用如下的命令,可以切换到指定的分支上进行开发:

Git和Github的使用_第50张图片

分支的快速创建和切换

使用如下的命令,可以创建指定名称的新分支,并立即切换到新分支上:

Git和Github的使用_第51张图片

合并分支

功能分支的代码开发测试完毕之后,可以使用如下的命令,将完成后的代码合并到master主分支上:

Git和Github的使用_第52张图片

删除分支

当把功能分支的代码合并到 master主分支上以后,就可以使用如下的命令,删除对应的功能分支:

Git和Github的使用_第53张图片
注意:如果需要强制删除,则d改成D即可完成

遇到冲突时的分支合并

如果在两个不同的分支中,对同一个文件进行了不同的修改,Git就没法干净的合并它们。此时,我们需要打开这些包含冲突的文件然后手动解决冲突。

Git和Github的使用_第54张图片

 手动解决的过程,就是通过打开文件(用vscode打开)

Git和Github的使用_第55张图片

将本地分支推送到远程仓库

如果是第一次将本地分支推送到远程仓库,需要运行如下的命令:

Git和Github的使用_第56张图片

查看远程仓库中所有的分支列表

通过如下的命令,可以查看远程仓库中,所有的分支列表的信息:

跟踪分支

Git和Github的使用_第57张图片

 拉取远程分支的最新的代码

Git和Github的使用_第58张图片

这里我们来看看怎么更新github里的代码,打开自己的仓库,然后点击js文件: 

Git和Github的使用_第59张图片

就可以打开下面这个界面:

Git和Github的使用_第60张图片

点击铅笔就可以对文件编辑:

Git和Github的使用_第61张图片

之后我们使用git pull就可以吧更新过的js文件下载到本地。 

删除远程分支

没有被合并的分支,可能会出现系统提示,不能用普通的删除方法,此时会提示使用-D的方式来删除。

Git和Github的使用_第62张图片

总结

Git和Github的使用_第63张图片


结尾 

Git和Github的使用,需要各位自己去自己实际操作一遍,就可以学懂了。多看看总结里需要我们记住的东西,忘记了就写在思维导图里面来记忆。感谢大家的收看。

你可能感兴趣的:(git,github)