IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git和Github的使用 -> 正文阅读

[开发工具]Git和Github的使用

前言

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


一、版本控制

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

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

?版本控制软件

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

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

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

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

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

本地版本控制系统

集中化的版本控制系统

分布式版本控制系统

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


二、Git基础

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

Git的特性

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

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

?SVN的差异比较

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

Git的记录快照

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

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

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

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

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

?注意:

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

?基本的 Git工作流程

基本的Git工作流程如下:

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


?三、安装并配置GIT

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

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

?这里有安装git的教程

配置用户信息

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

? 这里只需要我们点击git bash here 就可以打开面板输入下面的指令

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

?Git的全局配置文件

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

?检查配置信息

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

?获取帮助信息

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

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


?四、GIT基本操作

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

获取GIT仓库的两种方式

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

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

在现有目录中初始化仓库

?工作区中文件的4种状态

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

?检查文件的状态

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

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

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

?跟踪新文件

提交更新

?

对已提交的文件进行修改

暂存已修改的文件

?提交已暂存的文件

撤销对文件的修改

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

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

取消暂存的文件

跳过使用暂存区域

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

移除文件

忽略文件

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

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

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

glob模式

.gitignore文件的例子

查看提交历史

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

回退到指定的版本

总结


五、Github

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

开源

什么是开源许可协议

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

常见的5种开源许可协议

?这里需要注意,最重要的开源协议就是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了

新建空白远程仓库

请看图解:

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

远程仓库的两种访问方式

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

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

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

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

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

当我们的文件已经提交过一次之后,如果我们还需要提交命令,那么使用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
  • 粘贴如下的命令,并将your_email@example.com替换为注册Github账号时填写的邮箱:
  • ssh-keygen -t rsa -C "your_email@example.com"
  • 连续敲击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是否配置成功

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

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

将远程仓库克隆到本地

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

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


六、分支

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

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

master主分支

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

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

功能分支

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

查看分支列表

创建新分支

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

切换分支

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

分支的快速创建和切换

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

合并分支

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

删除分支

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


注意:如果需要强制删除,则d改成D即可完成

遇到冲突时的分支合并

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

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

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

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

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

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

跟踪分支

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

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

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

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

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

删除远程分支

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

总结


结尾?

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

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:12:07  更:2022-03-21 21:15:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:53:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码