git 分布式版本控制工具
svn是集中式
作用:代码存档备份 (支持多人协作开发)
git的三个区: 工作区 => 暂存区 => 仓库区
暂存区与仓库区都在 .git 隐藏文件夹中
(1)工作区:书写代码的地方,工作目录
(2)暂存区:暂存提交代码的地方。
git中无法直接从工作区提交到仓库g区,必须先经过暂存区
目的:避免误操作
(3)仓库区:代码永久存储区,每次存入git仓库后,会生成版本号,可以任意回退到任何一个具体版本
git命令
基础命令
1)初始化一个git仓库,生成一个隐藏文件夹 .git
git init
2)配置提交者信息 工作中要配置邮箱,一般公司给地址 推荐全局配置(–global)
git config --global user.name xxx
git config --global user.email xxx
//查看配置信息
git config --list
//取消配置
git config --unset --global user.name
git config --unset --global user.email
3)将工作区代码提交到暂存区
git add .
git add index.html //指定文件
git add *.js //所有的js文件
git add -A //所有文件
git add --all //所有文件
4)将暂存区代码提交到仓库区
git commit -m '提交说明'
git commit -a -m '提交说明' //如果一个已经暂存过的文件,可以快速提交,如果是未追踪的文件,则不生效。(即第一次提交将不会生效)
git commit --amend -m '提交说明' //修改最近的一次提交说明
git reset //取消暂存,从暂存区回退到工作区
5) 查看文件状态 (红色:工作区文件待提交。 绿 色:暂存区文件待提交。)
git status
git status -s 简化状态日志输出格式
6) 查看提交日志
git log
git log --oneline 简化版本日志输出
7) 版本回退,将代码恢复到已经提交的某一个版本中 指针
git reset --hard 版本号 可以回退到任意版本
git reset --hard head~0 将版本回退到最近一次提交
head~1 上一次提交
head~2 上上次提交
git reflog 可以查看所有的版本信息
分支命令
1) 创建分支
git branch 分支名 //一般会取名dev / develop
2) 查看分支
git branch
git branch -d xx //删除某个分支
3) 切换分支
git checkout 分支名
git checkout -b xx //创建并切换分支
4) 合并代码
git merge 分支名
jwt身份认证 (json web token)
在前后端分离模式的开发中,服务器如何知道来访者的身份呢?
基于 token 令牌:包含身份信息的字符串
将后台返回的token存在浏览器的本地存储中,下次请求时在请求头携带
页面访问拦截:判断本地存储是否有token, 没有token拦截到登录
比如某个网站的主界面,在head中添加js代码判断有没有token,如果没有就跳转到登录页面。
在登录页中,存储token:
localStorage.setItem('user-token',res.data.data.token)
localStorage.setItem('user-name',res.data.data.username)
在其他页面的head中,加入js语句,删除token:
<script>
if(localStorage.getItem('user-token')==null) location.href='./login.html'
</script>
在页面点击退出按钮时,就跳转到登录页,并删除本地存储中的内容
axios拦截器
首页登录成功后,获取后台数据渲染,发送请求后返回401(身份认证失败,没token或者token失效):
这是因为 接口需要请求头携带token,每个接口都需要携带token
接口携带token:
document.addEventListener('DOMContentLoaded',async function(){
const token = localStorage.getItem('user-token')
const res = await axios.get('/dashboard',{
headers:{ //携带请求头
'Authorization':token //这里是固定的,在请求头中带上token
}
})
console.log(res);
})