一、Git 版本管理
git 和 svn 的区别
git是分布式版本控制,svn是集中式版本控制(核心区别)
git相对于svn的优势就是不需要网络即可版本控制
git把内容按数据方式存储,而SVN是按文件
git可以是公用的,可以分享,svn基本是公司内部才能访问,网外不方便访问
git不依赖中央服务器,即使服务器有问题也不受影响,svn依赖服务器,一旦服务器有问题就会受影响
git没有一个全局的版本号,svn有
经常使用的 git 命令?
添加文件到暂存区
git add 文件名称
git add .多个文件操作
暂存区到版本库
git commit -m “注释信息”
上传本地指定分支到远程仓库
git push origin master
将远程仓库的文件拉取下来
git pull origin master
查看版本信息
git version
查看配置信息
git config --list
在当前目录新建一个Git代码库(生成隐藏.git文件)
git init
删除文件,并且将这次删除放入暂存区
git rm 文件名
查看状态
查看文件状态
git status
查看xx文件修改了哪些内容
git diff xx
版本回退
git用HEAD表示当前版本,上一个版本就是HEAD^ 上上一个版本就是HEAD^^,其他用数字HEAD~5
git reset --hard 版本id (本地变)
git push -f (远程变)
查看当前历史状态
git log 顺着当前分支往前查找 \ git reflog本地后悔药
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
撤销修改
git checkout --file
小结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
添加远程库
将自己本地的项目和远程仓库建立联系,执行以下两个代码关联起来
1)要关联一个远程库,使用命令
git remote add origin https://github.com/wanglu458512/supermall.git
2)关联后,第一次推送master分支的所有内容,使用
git push -u origin master
从远程克隆项目
git clone 项目地址
分支管理
分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
1)创建dev分支,然后切换到dev分支
git checkout -b dev
相当于以下两个命令
git branch dev 创建
git checkout dev 切换
2)这时候,用git branch查看当前分支,显示
* dev
当前分支前面会标一个*号
master
这时候可以修改你的文件
3)在dev分支上提交
git add readme.txt
4)现在dev分支工作完成,切换到master分支
git checkout master
此时再查看一个readme.txt文件,并没有刚才新添加的内容,因为刚才是在dev上操作
5)合并
git merge dev
6)合并后,删除dev分支
git branch -d dev
小结:
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
或者git switch <name>
创建+切换分支:git checkout -b <name>
或者git switch -c <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
解决冲突
这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,查看文件,手动修改内容,之后再合并
用git log --graph命令可以看到分支合并图
场景:普通开发人员和仓库管理人员
情况1 程序员A是后加入项目的,项目已经存在代码仓库
(1)克隆版本仓库
git clone git@github.com:kanlidy/HelloGit.git
(2)建立分支
git checkout -b (分支名)
(3)提交代码
查看代码修改的状态:
git status
添加到工作区:
git add .
提交到本地仓库:
git commit -m “(写下提交日志)”
推送到服务器:
git push origin 分支名
(4)在服务器上建立Merge Request,把自己的提交到远程的分支,Merge到Dev(开发分支)
情况2 程序员B是在一个新项目中,本地有一些代码,需要建立一个版本控制仓库(单人开发)
(1)在项目目录下,初始化仓库
git init
(2)添加到git版本控制系统:
git remote add origin git@github.com:kanlidy/HelloGit.git
(3)添加所有已经存在的文件到项目中:
git add .
(4)提交代码到本地仓库:
git commit -m “写下日志”
(5)提交代码远程服务器
git push origin <本地分支名>:<远程分支名>
git push origin master:master 或者
git push -u origin master 第一次提交
git push origin master之后再提交
https://www.liaoxuefeng.com/wiki/896043488029600/900005860592480廖雪峰git(看到了这里)
2.仓库管理人员
情况一:手工合并代码(不常用)
(1)在指定分支上获取更新
git checkout <指定分支>
(2)拉取服务器上的代码
git pull origin <指定分支>
(3)切换到dev,并获取dev上的更新,合并指定分支上的代码
git checkout dev
git pull origin dev
git merge <指定分支>
情况二:直接在GitHub上进行操作
直接点击accept merge request进行分支合并。
代码回撤参考git reset命令
获取更新参考git fetch命令
分支查看git branch
逻辑流程图gitk
状态命令git status
日志命令git reflog与git log
其他
git pull 和 git fetch 的区别
pull相当于git fetch 和git merge,即更新远程仓库的代码到本地仓库,然后将内容合并到当前分支
git fetch:相当于是从远程获取最新版本到本地,不会自动merge
git merge:将内容合并到当前分支
git pull:相当于是从远程获取最新版本并merge到本地
git rebase 和 git merge 的区别
git merge 和 git rebase 都是用于分支合并,关键在 commit 记录的处理上不同:
git merge 会新建一个新的 commit 对象,然后两个分支以前的 commit 记录都指向这个新 commit 记录。这种方法会保留之前每个分支的 commit 历史。
git rebase 会先找到两个分支的第一个共同的 commit 祖先记录,然后将提取当前分支这之后的所有 commit 记录,然后将这个 commit 记录添加到目标分支的最新提交后面。经过这个合并后,两个分支合并后的 commit 记录就变为了线性的记录了。
二、缺陷控制
在项目全生命周期中,保障项目质量的一系列行为
代码检测工具-ESLint
为什么要使用ESLint?
JavaScript是一个动态的弱类型语言,在代码编写的过程中,经常会出错,而因为其没有编译程序,为了寻找代码错误的地方,需要在执行的过程中不断的调试。
ESLint的作用就是让你在开发过程中发现自己的代码问题以及不规范的地方,提前发现问题所在,并且可以规范团队的代码风格保持一致。
什么是ESLint?
ESlint是一个开源的JS代码检查工具,它的目标是提供一个插件化的JavaScript代码检测工具。它可以让我们的代码风格一致、更加健壮、减少错误并用上社区的最佳实践。
https://cn.eslint.org/ 慕课html
三、前端自动化CICD
CICD持续集成 持续部署