【学习前提】
完成前端开发基础和JavaScript基础学习
【阶段说明】
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
作为开发团队的一员,需要熟练地与团队其他成员进行协同配合,git作为项目版本控制工具能有效地管理协同开发项目。
【学习技巧】
谨慎使用分支。
一、关于版本控制
1、版本控制软件(系统)
1.概念
版本控制软件是一个用来记录文件变化,以便简将来查阅特定版本修订情况的系统,故也加“版本控制系统”;把手工管理文件版本的方式改为由软件管理文件的版本,这个负责管理文件版本的软件就叫“版本控制软件”。
2.优点
操作简便:只需识记几组简单的终端命令,即可快速上手常见的版本控制软件;
易于对比:基于版本控制软件提供的功能,能够方便地比较文件的变化细节,从而查找出导致问题的原因;
易于回溯:可以将选定的文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态;
不易丢失:在版本控制软件中,被用户误删除的文件可以轻松恢复;
协作方便:基于版本控制软件通过的分支功能可以轻松实现多人协作开发时的代码合并操作。
2、版本控制系统的分类
1.本地版本控制系统
单机运行,使维护文件版本的操作工具化。
特点:使用软件来记录文件的不同版本,提高了工作效率,降低了手动维护版本的出错率。
缺点:
- 单机运行,不支持多人协作开发
- 版本数据库故障后,所有历史更新记录会丢失
2.集中化的版本控制系统
联网运行,支持多人协作开发;性能差、用户体验不好。
特点:
基于服务器\客户端的运行模式:
- 服务器保存文件的所有更新记录
- 客户端只保留最新的文件版本
优点:联网运行,支持多人协作开发。
缺点:
- 不支持离线提交版本更新
- 中心服务器崩溃后,所有人无法正常工作
- 版本数据库故障后,所有历史更新记录会丢失
典型代表:SVN
3.分布式版本控制系统
联网运行,支持多人协作开发;性能优秀、用户体验好。
特点:
基于服务器\客户端的运行模式:
- 服务器保存文件的所有更新版本
- 客户端是服务器的完整备份,并不是只保留最新的文件版本
优点:
- 联网运行,支持多人协作开发
- 客户端断网后支持离线本地提交版本更新
- 服务器故障或损坏后,可使用任何一个客户端的备份进行恢复
典型代表:Git
二、Git 和 Github 基础
1、Git 基础概念
1.什么是Git
Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。
特点:项目越大越复杂,协同开发者越多,越能体现出 Git 的高性能和高可用性。
2.Git 中的三个区域
使用 Git 管理的项目拥有三个区域:
- 工作区:处理工作的区域
- 暂存区:已完成的工作的临时存放区域,等待被提交
- Git 仓库:最终的存放区域
3.Git 中的三种状态
- 已修改:表示修改了文件,但还没将修改的结果放到暂存区
- 已暂存:表示对已修改文件的当前版本做了标记,使之包含在下次提交的列表中
- 已提交:表示文件已经安全地保存在本地的 Git 仓库中
注意:
- 工作区的文件被修改了,但还没有放到暂存区,就是已修改状态
- 如果文件已修改并放入暂存区,就属于已暂存状态
- 如果 Git 仓库中保存着特定版本的文件,就属于已提交状态
4.Git 的基本工作流程
- 在工作区中修改文件
- 将想要下次提交的更改进行暂存
- 提交更新,找到暂存区的文件,将快照永久性存储到 Git 仓库
2、安装并配置 Git
1、在 Windows 中下载并安装 Git
在开始使用 Git 管理项目的版本之前,需要将它安装到计算机上。
Git 安装包下载地址:https://git-scm.com/downloads
2、配置用户信息
安装完 Git 之后,要做的第一件事就是设置自己的用户名和邮件地址。因为通过 Git 对项目进行版本管理时,Git 需要使用这些基本信息来记录是谁对项目进行了操作。
git config --global user.name "tcr"
git config --global user.email "3372204130@qq.com"
注意:如果使用了 --global 选项,那么该命令只需要运行一次,即可永久生效。
3、Git 的全局配置文件
通过 git config --global user.name 和 git config --global user.email 配置的用户名和邮箱地址,会被写入到 C:\Users\用户名文件夹/.gitconfig 文件中。这个文件是 Git 的全局配置文件,配置一次即可永久生效。
4、检查配置信息
查看所有的全局配置项:
git config --list --global
查看指定的全局配置项:
git config user.name
git config user.email
5、获取帮助信息
可以使用 git help <verb> 命令,无需联网即可在浏览器中打开帮助手册:
# 例:打开 git config 命令的帮助手册
git help config
如果不想查看网整的手册,则可用 -h 选项获得简明的“help”输出:
# 例:获取 git config 命令的快速参考
git config -h
3、Git 基本命令小结
Git 命令 | 说明 |
---|---|
git init | 初始化 Git 仓库 |
git add . | 一次性将所有文件加入暂存区 |
git commit -m "提交消息" | 将暂存区的文件提交到 Git 仓库 |
git status 或 git status -s | 查看文件状态 |
4、开源
1、什么是开源
开源:开源即开放源代码(Open source code),代码是公开的,任何人都可以查看、修改和使用开源代码。
闭源:软件的代码是封闭的,只有作者能查看和修改闭源软件的代码。
开源不仅提供程序还提供程序的源代码;闭源则只提供程序,不提供源代码。
2、开源许可协议
开源并不意味着完全没有限制,为了限制使用者的使用范围和保护作者的权利,每个开源项目都应该遵守开源许可协议(Open Source License)。
常见的 5 种开源许可协议:
- BSD(Berkeley Software Distribution)
- Apache Licence 2.0
- GPL(GNU General Public License)是具有传染性的一种开源协议,不允许修改后和衍生的代码作为闭源的商业软件发布和销售;使用GPL的最著名的软件项目:Linux。
- LGPL(GNU Lesser General Public License)
- MIT(Massachusetts Institute of Technology)是目前限制最少的协议,唯一的条件:在修改后的代码或发行包中,必须包含原作者的许可信息;使用MIT的软件项目有:jQuery、Node.js。
更多介绍参考:各种开源协议介绍 | 菜鸟教程 (runoob.com)
3、为什么拥抱开源
开源的核心思想是“我为人人,人人为我”,人们越来越喜欢的原因大致如下:
- 开源给使用者跟多的控制权
- 开源让学习变得容易
- 开源才有真正的安全
开源是软件开发领域的大趋势,拥抱开源就像站在了巨人的肩膀上,不用重复造轮子,让开发越来越容易。
4、开源项目托管平台
专门用于免费存放开源项目源代码的网站叫做开源项目托管平台。
- Github(全球最牛的开源项目托管平台,没有之一)
- Gitlab(对代码私有性支持较好,因此企业用户较多)
- Gitee(又叫码云,是国产的开源项目托管平台;访问速度快、纯中文界面、使用友好)
世界上比较出名的就是上述这 3 个,它们只能托管以 Git 管理的项目源代码。
5、什么是Github
全球最大的开源项目托管平台,因为只支持 Git 作为唯一的版本控制工具,故名 GitHub。Github ≠ Git
5、Github
1、新建空白远程仓库并访问
点击右上角加号的 New repository,填写 Repository name 和 Description (optional) ,最后点击底部的绿色按钮 Create repository 就建好了。
远程仓库的两种访问方式:
- HTTPS 零配置;但每次访问仓库时,需要重复输入 Github 的账号和密码才能访问成功。
- SSH(推荐使用) 需要进行额外的配置;但配置成功后,每次访问仓库时,不需要重复输入 Github 的账号和密码。
2、配置SSH将本地仓库上传
1.生成SSH key
SSH key 的作用:实现本地仓库和 Github 之间的免登录和加密数据传输
SSH key 的好处:免登录身份认证、数据加密传输
SSH key 的组成:
id_rsa(私钥文件,存放与客户端的电脑中即可)
id_rsa.pub(公钥文件,需要配置到 Github 中)
生成SSH key:
1.右键打开 Git Bash;
2.执行 ssh-keygen -t rsa -b 4096 -C "注册 Github 账号时填写的邮箱" 命令;
3.连续敲击 3 次回车,即可在 C:\Users\用户名文件夹\.ssh 目录中生成 id_rsa 和 id_rsa.pub 两个文件。
2.配置SSH key
配置步骤简述:
- 使用记事本打开 id_rsa.pub 文件,复制里面的文本内容
- 在浏览器中登录 Github ,点击头像→Setting→SSH and GPG Keys→New SSH key
- 将 id_rsa.pub 文件中的内容粘贴到 Key 对应的文本框中
- 在 Title 文本框中任意填写一个名称,来标识这个 Key 从何而来
3.检测SSH key 的配置
打开 Git Bash,输入 ssh -T git@github.com,然后输入 yes,出现 Hi username!You've successfully ... 略 ... shell access. 证明配置成功了。
4.基于SSH将本地仓库上传到 Github
新建一个项目,打开 Git Bash,初始化 Git 仓库,将项目文件进行本地提交,然后在浏览器中新建一个空白远程仓库,按上述方法配置SSH,最后执行相应代码即可完成。
三、Git 分支
1、分支的概念
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习 Git 时,另一个你正在另一个平行宇宙学习SVN,如果两个宇宙互不干扰,那对现在的你也没啥影响,不过,在某个时间点,两个平行宇宙合并了,于是你既学会了 Git 又学会了SVN。
实际开发中,在进行多人协作开发时,为了防止互相干扰,提高协同开发的体验,建议每个开发者都基于分支进行功能的开发。
1、master 主分支
在初始化本地 Git 仓库时,Git 会默认创建一个名为 master 的分支,通常被叫做主分支。
在实际工作中,master 主分支的作用是用来保存和记录整个项目已完成的功能代码。因此,不允许程序员直接在 master 主分支上修改代码,因为风险太高,容易导致整个项目崩溃。
2、功能分支
由于程序员不能直接在 master 分支上进行功能开发,所以有了专门用来开发新功能的功能分支,它是临时从 master 主分支上分叉出来的,当新功能开发且测试完毕后,最终需要合并到 master 主分支上。
2、Git 分支的基本使用
1、git checkout -b 新分支名称
创建指定名称的新分支并立即切换到新分支上。
2、git push -u origin 新分支名称
第一次将本地分支推送到远程仓库。
3、git checkout 指定分支的名称
切换到指定分支上进行开发。
4、git branch
查看当前 Git 仓库中所有的分支列表。