《Git》版本管理工具的初识与入门,2024年最新2024最新Web前端面试笔试题目分享

如果,此时不小心将文件都git add过了,也就是所有的文件都被暂存了,这是git diff是不起作用的,因此需要输入

//将所有处于已暂存的文件和已提交的文件进行对比

git diff --cached

这样便可以将文件的不同处显示出来了;

文件的重命名和移动


有时候,文件的路径没有按规范存放,又或者项目的目录结构重新规整过了,需要移动文件到不同的路径下

//移动文件

git mv 原文件 文件路径

//比如

git mv Home.vue Home/ //将Home.vue文件移入Home文件夹

移动的时候,甚至可以改名,比如

//比如

git mv Home.vue Home/Home123.vue //将Home.vue文件移入Home文件夹同时重命名为Home123.vue

利用这个远离可以为文件快速改名,比如有时候不需要移动路径,但是原模块因为功能新增,导致名字不能代表新功能模块,需要改名,那么可以

//直接改名

git mv Home.vue Home123.vue //将Home.vue文件移入当前路径文件夹同时重命名为Home123.vue

只是利用了其移动到当前文件夹并重命名,达到了快速改名的效果;

文件的复原


还原文件到最后一次提交

很多时候修改了文件,发现修改了之后报了各种各样的错误,然后这些错误又解决不了,所以需要将文件恢复到最后一次提交的状态,需要如下操作

//将文件恢复到最后一次提交的状态

git checkout – 文件名

//比如,现在对Home.vue进行了修改,然后报了一堆错误,又解决不了,需要直接恢复到之前保存的状态

git checkout – src/views/Home.vue //将src/views下的Home.vue恢复到最后一次提交时的内容

注意,如果文件此时已经处于已暂存的状态,也就是已经git add过了,那么git checkout是不会生效的,如果要对其使用git checkout,那么必须先当文件移除暂存区,也就是

//移除暂存

git rm --cached 文件名

//或者这种移除暂存,这种也是移除暂存

git reset HEAD 文件名

移出暂存区后,就可以正常使用git checkout了

版本回退

假如现在提交之后,发现存储的版本错误了,甚至在某个版本之后的所有版本都有错误,那么就需要版本回退,注意,这个回退到某一个版本之后,后面所有的版本都会消失,因此这种回溯得慎重再慎重使用

//快速回退到上个版本

git reset --hard HEAD^

//快速回退到上上个版本等等,依此类推

git reset --hard HEAD^^

如果版本很多,需要回溯到很早以前的一个版本

//回溯到很早以前的版本

git reset --hard 版本的哈希值

//比如

git reset --hard c61ebb3

后面的:c61ebb3,是指定的版本的哈希值,比如通过git log查看版本仓库之后,其中在版本之中有一个类似这个信息:commit c61ebb3031b0abd766e6830b772e3eb097c709a4;这个就是代表当前提交版本的哈希值,当然,回溯的时候不需要输入完整的哈希值,输入个前几位就可以了,比如前7位;

再次声明一下,这种回退之后不会保留回溯版本之后的所有版本,因此得慎用,如果要查看记录,那么可以

//查看回退记录

git reflog

回到旧版本

回到旧版本和版本回退有声明区别,区别就是:回到旧版本之后,在旧版本之后的版本并不会被删除,因为上一节中的版本回退,举个例子

版本回退之后

假设你的仓库里有:version 1 -> version 2 -> version 3三个版本,从version 3回到version 2之后,那么实际上version 3是会被删除的,此时你的版本库中只有:version 1 -> version 2,有时候我们不需要这样的回退,只需要将当前的版本回到某一个旧的版本;

回到旧版本之后

假设你的仓库里有:version 1 -> version 2 -> version 3三个版本,从version 3回到version 2之后,那么实际上是往当前的版本中再添加了一个版本,最后变成:version 1 -> version 2 -> version 3 -> version 2;

//单个文件恢复到旧版本

git checkout 哈希值 – 文件名

Git分支管理

=================================================================

分支,Git中一个大杀器,可以这么理解,每个分支都是主线的一个备份,多个分支之间相互不影响,也就是在分支中做的开发,影响的仅仅是分支本身,不影响其他分支,也不影响marster,因此,开发的时候哪怕自己的功能只开发了一半,也可以保存到分支里面,因为你开发的不会影响到别人,只有到最终的全部开发完毕的时候,将分支合并入主线,这样你所开发的部分才会影响到每个人;

假如一个前端项目有5个人开发,一个功能往往不可能一下子就做完,很多时候需要好几天,然而我们为了保存进度,基本上每天都需要将自己做的那一部分保存,如果自己做的那部分只写了一半,然而做的这一半被别人checkout了,不说会不会影响到别人,光是这个一半是不是就是很尴尬,那么,如果有一条主线,这条主线代表了项目最终的形态,而每个人都有自己的一条支线,自己做的部分仅保存在支线里,这样就影响不到别人,一旦自己做的部分完成了,将做的合并进主线,这样合并进主线的部分才会被其他人checkout到;

主线,一半称为: master,也就是master这条线就是项目的各个阶段的最终版本;

创建分支

创建单独某个人的分支

//创建分支

git branch 分支名字

//比如,创建了一个叫做dev的分支

git branch dev

查看分支

//创建分支

git branch

切换分支

当使用git branch查看分支后,哪个分支前面有一个“*”号,那么哪个分支就是当前的分支,如果要切换

//切换分支

git checkout 分支名字

//比如切换到dev分支

git checkout dev

另外,新建分支,并且切换到新建分支,有一个快捷的合成写法

//创建一个分支并且切换到该分支下

git checkout -b 分支名字

//比如

git checkout -b dev2 //新建一个分支dev2并且切换到dev2下

删除分支

注意点是,不能在当前分支下,删除当前分支,如果要删除某个分支,必须处于其他分支下

//删除分支

git branch -d 分支名字

//比如

git branch -d dev2 //删除分支dev2

这种写法必须是dev2这个分支下没有commit的内容,如果有内容,要么先合并,要么强制删除

//强制删除

git branch -D 分支名字 //强制删除

一次性删除多个已合并的分支

//删除已合并的分支,除去当前所在的分支,除去master分支,除去develop分支

git branch --merged | grep -v ‘*|master|develop’ | xargs -n 1 git branch -d

如果还有别的分支要排除,那么就按找写法加进去,或者修改

合并分支

合并

如果要合并,首先得明确谁合并到谁,通常我们是将master作为主线的,因此也就是通常将别的支线合并到master

//切换到master下

git checkout master

//将某个分支合并到master

git merge dev //通过merge命令,将dev支线的内容合并到master下

上面说的是一种最理想的情况,一切都很顺利,但实际上,多人协同的时候,往往会出现合并的时候会发生冲突,为什么会发生冲突?原因也很简单,多人协同的时候,几个人同时创建了各自的分支,然后,其中的某个文件,a修改了,b也修改了,c也修改了,这时候a先合并进了master,等到b或者c去合并进主线的时候,文件已经不再是原来的那个文件了,如果b进行合并,那么a的内容就会被覆盖掉,因此这个时候合并就会失败,因为git不知道该这么处理了;

合并冲突解决

如果出现这种问题,该这么处理:

第一种:忽略此次合并,以master的为标准,其他分支的修改不作数,直接放弃

//忽略合并

git merge --abort

第二种:对冲突的地方逐一修改,合并后,比如master的分支里和dev的分支里有10处不同的地方,这时候git会自动帮你在文件里对这些不同的地方进行标注,然后你需要将这些标注的地方逐一修改

在这里插入图片描述

上图就是git中会给自动标注的不同的地方,这个时候,需要收到对这部分进行修改(这部分是文本,可以随便这么编辑),只留下正确的内容;

解决完所有不同的地方之后,使用命令git add .,将所有文件放入暂存,再输入命令git commit进行提交(不需要-m),提交后会出现一个类似于文本记录的页面,再这个界面上记录,具体界面如下

在这里插入图片描述

完成记录后,按键盘上的ESC键,之后输入wq,保存退出编辑模式,这样就解决了冲突

所以,发生冲突的最根本原因还是同事协同之间不沟通,相互改了都需要改的文件,因此才会出现冲突,为了避免这种问题,最好的办法还是改文件前最好相互了解一下,看看改的文件会不会也是对方需要改的文件,如果都需要改,那么及时合并一下,另外一个人在其合并的基础上checkout;

Fast forward

另外,很重要,合并分支时,Git会默认使用一个叫做Fast forward的方式进行合并,如果使用fast forward进行合并,那么分支的信息在删除分支后会丢失,如果要阻止使用Fast forward的合并方式,那么在合并时可以使用命令

//禁止使用fast forward方式合并

git merge --no-ff -m 信息 分支名

//比如

//禁用fast forward方式合并dev分支,并进行备注

git merge --no-ff -m “merge with no-ff” dev

那么什么时候使用fast forward方式合并呢?居我个人查到的资料显示:

  • 如果项目是从远程仓库拉取时,比如从github(或公司中央服务器)上拉取master分支和本地master分支进行合并的时候,就需要使用fast forward方式进行合并,也就是不需要命令 --no-ff;

  • 如果是本地master分支进行合并其他分支的时候,就需要使用–no-f命令,禁止使用fast forward方式进行合并

仅合并不提交

有时候,仅仅需要合并分支,但是合并后的分支不要是已提交的状态,仅处于已暂存就够了,那么合并的时候就可以多输入一个命令–no-commit,具体如下

//合并dev分支,禁止使用fast forward方式,禁止提交

git merge --no-ff --no-commit dev

之后如果要提交,那么需要手动输入命令git commit

分支管理

实际上master分支一般不做合并,因为master分支代表的是最终的上线的稳定版,我们不可能拿稳定版去做各种开发测试,一般留给开发人员进行合并的分支叫做dev分支,在这个分支上做每个小阶段的测试,等到最终确定是稳定版本了,可以发布1.0,1.1这种大版本了,才会将dev分支上的内容合并到master分支上,所以团队合作看起来更像是如下图的分支

在这里插入图片描述

远程仓库

==============================================================

正常情况下,一般都有一个远程仓库,作为“中央服务器”,方便多人协同办公时的文件交换,本例中使用GitHub作为例子学习,如果公司自己建有服务器,从查到的资料来看似乎步骤差不多,大同小异;

*下面示例中的远程仓库地址以GitHub为例,请自行注册账号,新建项目;

获取远程仓库项目


//将地址上的项目拷贝下来

git clone 远程项目地址

大部分情况下,直接clone项目的时候,git会自动帮你checkout到master分支下,如果不想checkout,或者想重命名项目(如果从远程仓库clone项目时,实际上Git会自动将本地的master分支和远程的master分支对应起来,区别在于,如果没有推送权限,那么是看不到push地址的)

git clone --no-checkout 远程仓库地址 新项目名称

//比如

//下载远程地址上的项目,并且取消checkout,然后项目重命名为mywebside123

git clone --no-checkout https://github.com/xxxxx/myWebside.git mywebside123

同理如果只需要单独重命名或者不checkout都可以;

上面的这种情况只能抓去到master分支,但是master分支往往不能动,能合并操作的是dev分支,那么就需要抓去dev分支

git checkout -b dev origin/dev

上传项目到远程仓库


第一次上传的时候需要先将项目与远程地址连接起来

//通过remote连接远程仓库,这一步的作用是关联,将本地仓库和远程仓库连接起来

git remote add 自定义名字 GitHub的项目路径

//比如,连接的gitHub远程仓库

git remote add orgin https://github.com/xxxxx/myWebside.git

如果连接成功,那么输入: git remote,会显示自定义的名字,上例中对应的就是origin,之后输入以下推送到远程仓库

//将本地仓库的中的master分支推送到远程仓库

git push -u 自定义名字 master

//例如

git push -u origin master

//同理,如果需要推送的不是master,而是dev分支,那么就是

git push -u origin dev

如果想查看是否有关联远程仓库,那么输入命令

//git branch是查看本地分支,加上-r则是查看远程仓库

git branch -r

//一次性查看所有分支,包括本地,包括远程仓库

git branch -a

上面是第一次push项目到远程仓库时候时的操作,如果之后上传,仅仅只需要git push就可以了

//与远程仓库建立关系以后,只需要git push就可以上传到远程仓库了

git push

如果是推送某个指定的分支

//上传dev分支到远程仓库

git push origin dev

如果推送失败,那么就代表推送的内容和远程仓库的内容有冲突,也就是你和小伙伴修改了同一个文件,git不知道哪个是正确的,需要你手动修改;

首先先使用git pull把最新的分支抓取下来

//抓取最新的内容

git pull

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

ES6

  • 列举常用的ES6特性:

  • 箭头函数需要注意哪些地方?

  • let、const、var

  • 拓展:var方式定义的变量有什么样的bug?

  • Set数据结构

  • 拓展:数组去重的方法

  • 箭头函数this的指向。

  • 手写ES6 class继承。

微信小程序

  • 简单描述一下微信小程序的相关文件类型?

  • 你是怎么封装微信小程序的数据请求?

  • 有哪些参数传值的方法?

  • 你使用过哪些方法,来提高微信小程序的应用速度?

  • 小程序和原生App哪个好?

  • 简述微信小程序原理?

  • 分析微信小程序的优劣势

  • 怎么解决小程序的异步请求问题?

其他知识点面试

  • webpack的原理

  • webpack的loader和plugin的区别?

  • 怎么使用webpack对项目进行优化?

  • 防抖、节流

  • 浏览器的缓存机制

  • 描述一下二叉树, 并说明二叉树的几种遍历方式?

  • 项目类问题

  • 笔试编程题:

最后

技术栈比较搭,基本用过的东西都是一模一样的。快手终面喜欢问智力题,校招也是终面问智力题,大家要准备一下一些经典智力题。如果排列组合、概率论这些基础忘了,建议回去补一下。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

a8.png)

微信小程序

  • 简单描述一下微信小程序的相关文件类型?

  • 你是怎么封装微信小程序的数据请求?

  • 有哪些参数传值的方法?

  • 你使用过哪些方法,来提高微信小程序的应用速度?

  • 小程序和原生App哪个好?

  • 简述微信小程序原理?

  • 分析微信小程序的优劣势

  • 怎么解决小程序的异步请求问题?

其他知识点面试

  • webpack的原理

  • webpack的loader和plugin的区别?

  • 怎么使用webpack对项目进行优化?

  • 防抖、节流

  • 浏览器的缓存机制

  • 描述一下二叉树, 并说明二叉树的几种遍历方式?

  • 项目类问题

  • 笔试编程题:

最后

技术栈比较搭,基本用过的东西都是一模一样的。快手终面喜欢问智力题,校招也是终面问智力题,大家要准备一下一些经典智力题。如果排列组合、概率论这些基础忘了,建议回去补一下。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-k64rwLHp-1712784935936)]

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值