前端-Git
1. 版本控制
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
好处:
-
操作简便:只需识记几组简单的终端命令,即可快速上手常见的版本控制软件;
-
易于对比:基于版本控制软件提供的功能,能够方便地比较文件的变化细节,从而查找出导致问题的原因;
-
易于回溯:可以将选定的文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态;
-
不易丢失:在版本控制软件中,被用户误删除的文件,可以轻松的恢复回来;
-
协作方便:基于版本控制软件提供的分支功能,可以轻松实现多人协作开发时的代码合并操作;
分类:
2. Git
① 概述
Git 是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理;
特点:项目越大越复杂,协同开发者越多,越能体现出 Git 的高性能和高可用性。
Git 之所以快速和高效,主要依赖于它的如下两个特性:
-
直接记录快照,而非差异比较;
-
近乎所有操作都是本地执行;
② Git的三个区域
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域;
1️⃣ 工作区(working Directory):简单理解就是你在电脑里能看到的目录;
2️⃣ 暂存区(Stage/Index):用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息,一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index);
3️⃣ 资源库(Repository或Git Directory):安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本;
3种状态:
1️⃣ 已修改:表示修改了文件,但还没将修改的结果放到暂存区;
2️⃣ 已暂存:表示对已修改文件的当前版本做了标记,使之包含在下次提交的列表中;
3️⃣ 已提交:表示文件已经安全地保存在本地的 Git 仓库中;
- 工作区的文件被修改了,但还没有放到暂存区,就是已修改状态;
- 如果文件已修改并放入暂存区,就属于已暂存状态;
- 如果 Git 仓库中保存着特定版本的文件,就属于已提交状态;
③ Git的工作流程
-
在工作区中修改文件;
-
将你想要下次提交的更改进行暂存;
-
提交更新,找到暂存区的文件,将快照永久性存储到 Git 仓库;
④ Git的安装
https://git-scm.com/install/
⑤ Git的基本操作
① 获取 Git 仓库的两种方式
1️⃣ 将尚未进行版本控制的本地目录转换为 Git 仓库;
2️⃣ 从其它服务器克隆一个已存在的 Git 仓库;
② 在现有目录中初始化仓库
如果自己有一个尚未进行版本控制的项目目录,想要用 Git 来控制它,需要执行如下两个步骤:
-
在项目目录中,通过鼠标右键打开“Git Bash”;
-
执行 git init 命令将当前的目录转化为 Git 仓库;
git init 命令会创建一个名为 .git 的隐藏目录,这个 .git 目录就是当前项目的 Git 仓库,里面包含了初始的必要文件,这些文件是 Git 仓库的必要组成部分。
③ 工作区中文件的 4 种状态
工作区中的每一个文件可能有 4 种状态,这四种状态共分为两大类,如图所示:
Git 操作的终极结果:让工作区中的文件都处于“未修改”的状态;
分类 | 命令 | 用途 |
---|---|---|
初始化仓库 | git init | 在当前目录初始化一个新的 Git 仓库。 |
克隆仓库 | git<仓库地址> | 克隆远程仓库到本地。 |
分支管理 | git branch <分支名> | 创建新分支。 |
git checkout <分支名> | 切换到指定分支。 | |
git checkout -b <分支名> | 创建并切换到新分支。 | |
git branch -d <分支名> | 删除本地分支(需先切换到其他分支)。 | |
提交更改 | git status | 查看工作区和暂存区的文件状态。 |
git add <文件名> | 将指定文件添加到暂存区。 | |
git add . | 添加所有修改的文件到暂存区。 | |
git commit -m "提交信息" | 提交暂存区的更改到本地仓库。 | |
远程操作 | git remote add origin <仓库地址> | 关联远程仓库。 |
git push origin <分支名> | 推送本地分支到远程仓库。 | |
git pull origin <分支名> | 拉取远程分支的更新到本地。 | |
撤销操作 | git checkout -- <文件名> | 撤销工作区文件的修改(未添加到暂存区)。 |
git reset HEAD <文件名> | 将文件从暂存区移回工作区。 | |
git reset --hard <commit-id> | 回退到指定提交(慎用)。 | |
合并与冲突 | git merge <分支名> | 合并指定分支到当前分支。 |
git stash | 临时保存工作区的修改(适用于切换分支前未提交的情况)。 | |
git stash pop | 恢复暂存的修改。 | |
标签管理 | git tag <标签名> | 为当前提交打标签。 |
git push origin <标签名> | 推送标签到远程仓库。 | |
查看信息 | git log | 查看提交历史记录。 |
git diff <文件名> | 查看文件的具体修改内容。 |
3. VS Code中的Git操作
①. 安装VS Code
下载地址:https://code.visualstudio.com/Download
② 克隆GitHub中的存储库
1、复制GitHub存储库的SSH链接地址:
2、打开VS Code点击克隆,粘贴SSH链接地址进行下载
③ 查看当前所在分支:
1、界面查看:
2、切换到终端,命令查看:
git branch -a
④ 工作开发四步曲(添/提/拉/推)
首先要明白四步曲分别是哪四步,其作用分别是什么?
添:将修改的内容添加到本地暂存区 git add。
提:将本地暂存区中的内容提交到本地代码库 git commit -m 'description'。
拉:同步,拉取远程代码库中的内容,在多人协同开发中十分的重要,因为假如事先没有同步更新到最新版本有可能会覆盖别人修改的东西,假如拉取后有冲突直接使用VS Code解决冲突即可 git pull。
推:将本地代码库中的内容推送到远程代码仓库 git push。
1.添加暂存区:
新增Information.txt文本文件,添加至本地暂存区。
提交本地代码库:
拉取同步远程最新代码库:
推送至远程代码库:
验证是否推送成功,查看GitHub中的仓库内容:
⑤ 冲突解决:
接下来我们来自己模拟一下多人开发,如:我在本地修改Information.txt文本文件的内容,然后在到GitHub中修改一次这样本地在提交的时候就会产生冲突,然后我们可以借助VS Code智能的解决冲突的方式帮助我们来解决冲突。
GitHub中的修改:
本地提交后,拉取时提示冲突如下:
合并冲突提交到远程代码库中:
VS Code提供了四种智能合并的方式供给我们选择,我们可以按照实际情况进行代码冲突解决。当然也可以手动删除解决,不过要慎重,可能一不小心就把同事辛辛苦苦写了几天的代码给覆盖了哦,这里我选择了【保留双方更改】的方式进行冲突解决。
冲突完美解决:
⑥ 创建分支并推送到远程代码库:
1、切换到源代码管理视图:
2、选择需要创建子分支的主分支:
注意:我们这里为develop分支创建feature-20210218分支。
3、将新建分支推送到远程代码库:
⑦ 子分支开发完成后合并到主分支中
首先我们在feature-20210218子分支中创建一个文件夹和一个文本文件,然后将feature-20210218子分支合并到develop开发分支中合并提交到远程代码库。
1、feature-20210218子分支中创建一个文件夹和一个文件:
2、使用实际工作开发四步曲(添,提,拉,推)教程将新添加的内容推送到远程代码库:
切换到feature-20210218分支:
查看文件是否提交成功:
3、将feature-20210218子分支合并到develop开发分支:
a.首先切换到develop分支中:
b.选择需要合并过来的分支:
c.推送至远程仓库,查看合并是否成功:
⑧、VS Code Git提交修改历史记录查看(甩锅专用):
需要安装Git History拓展。
查看对应文件的修改历史记录: