「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战」。
一: Git 是什么?
Git: 分布式版本管理工具
SVN:集中式版本管理工具
二:分布式 VS 集中式
1.分布式:
-
每个用户都在本地拥有一个完整的仓库
优点:
- 如果任意服务器崩溃了,可以立即从用户手中 clone 一份完全一样的代码仓库出来,不用担心服务器崩溃
- 可以本地提交
2.集中式:
-
由一个代码服务器集中管理代码
优点:
- 代码必须存储在服务器上,如果没有服务器则无法提交和更新,代码安全性高
缺点:
- 如果服务器崩了,就废了
结论:前端领域更多的使用 Git 而不是 SVN。
(1). 初始化仓库
在当前目录下生成一个 .git 目录
当前目录下所有的文件都处于 Untracked 未追踪的
```
git init
```
(2). 添加至暂存区
将当前目录所有文件都添加到暂存区
```
git add .
```
(3). 提交至本地仓库
```
git commit -m "提交日志"
```
(4). 推送至远程仓库
a. 在 Gitee 或 Github 等平台创建一个远程仓库
b. 配置 SSH Keys
c. 关联远程仓库
```
# 添加关联远程仓库
git remote add origin 仓库地址
# 删除关联远程仓库
git remote remove origin
# 查看关联的远程仓库
git remote -v
```
d. 推送至远程仓库
```
git push -u origin 分支名
```
(5).. 查看日志
```
git log
git log --oneline
git log -3 # 查看最近三次提交记录
```
(6). 版本回退
```
# --hard 慎用, 会清除所有未提交的代码 (代码只要未提交就无法还原)
git reset --hard CommitID
# --soft 不会清除未提交的代码
git reset --soft CommitID
```
- 需求:我辛辛苦苦写了 300 多行 bug,想全部删除该怎么办?
- 解决方案:
```
# HEAD~0 表示最新版, HEAD~1 表示上一个版本, 以此类推
git reset --hard HEAD~0
```
(7). 撤销版本回退
```
# 查看操作日志
git reflog
```
前提:一般情况下,不允许向主分支 push
工作环境的分支:
- master(线上稳定版本的代码)
- dev(开发分支)
- staging(测试服务器分支)
- login(业务分支...)
既然不能向主分支 push 代码,如何将代码合并到对应的分支呢?
解决方法:PR (Pull Request)
3.PR 提交流程
(1). 在本地新建一个分支,开始写代码 (2). 功能完成后,提交到本地 (3). 将分支推送至远程仓库 (4). 去远程仓库新建一个 PR (5). 邀请你的老大来 review (检查) 你的代码 (6). 老大觉得代码通过了,并测试完成后,就同意合并到目标分支
提交代码的日志规范:
(1). feat:新增功能 (2). fix:修复 Bug (3). docs: 修改文档 (4). chore: 添加或修改依赖库(yarn add / yarn remove) (5). style:修改代码风格 (6). refactor: 重构 (7). perf: 性能优化、体验优化 (8). test: 测试用例 (9). build: 添加一些打包需要用的依赖
提交日志的模板:
📃 docs(Git): 新增了代码提交规范
写了很多规范名词的释义