带你10天精通vue框架(二)之过来人手把手教你如何解决git冲突(面试常问)

git冲突解决(一)

只要面试官问一些GIt相关问题,是辨别真假程序员的有效手段之一,GIt提交、拉取、分支、冲突解决是在多人协作当中经常遇到的问题,不可能没有遇到!在多人协作开发项目的时候,不可避免的会遇到代码冲突,虽说我们每次再开发以前要拉取代码,但是冲突还是不能彻底避免,这个时候就需要我们的小伙伴熟练掌握解决冲突的技能显得尤为重要

产生冲突的场景
一大早同事A来到办公室,打开电脑启动环境执行git pull(拉取代码,修改代码之前一定要先拉取养成良好的习惯,尽可能的减少代码冲突),开始修改项目的首页的Bug,啪啪啪…
一会儿同事B气喘吁吁的坐下来,同样的开机启动环境git pull,然后同样去修改首页的Bug,啪啪啪…
看似风平浪静,但是掐指一算,一会儿即将可能有大事要发生,等待中…
同事A事先修改完了Bug,git push到了远程服务器,然后继续去修改其它Bug,同事B也修改完了,执行了git push,然后高高兴兴去厕所了,回来以后一看小黑窗:
报…错…了…
推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突不要慌,解决办法我给大家介绍两种,酌情选择

解决方案一(强制覆盖本地代码,你自己修改的代码即将被远程库的代码所覆盖)

把你修改的代码进行备份,然后执行命令:
git reset --hard origin/master
git pull
从你备份好的文件当中把你写的代码拿过去,修改完成再进行git push

解决方案二(合并远程库和你本地的代码)执行命令:

git fetch 更新远程仓库文件
git diff master origin/master 本地文件和远程仓库文件进行对比
git merge origin/master 自动合并
根据需求手动删除不必要的代码,修改完成git push到远程仓库
小命令:最后,补充一个我之前在工作当中经常使用的查看Git提交日志的命令,除了git log之外还有一个很好用“gitk”在小黑窗中执行一下,会有神奇的事情发生…

git冲突解决(二)

1、git冲突的场景

情景一:多个分支代码合并到一个分支时;
情景二:多个分支向同一个远端分支推送代码时;
实际上,push操作即是将本地代码merge(合并)到远端库分支上。
关于push和pull其实就分别是用本地分支合并到远程分支 和 将远程分支合并到本地分支
所以这两个过程中也可能存在冲突。

git的合并中产生冲突的具体情况:
  <1>两个分支中修改了同一个文件(不管什么地方)
  <2>两个分支中修改了同一个文件的名称
两个分支中分别修改了不同文件中的部分,不会产生冲突,可以直接将两部分合并。

2、冲突解决方法

情景一:在当前分支上,直接修改冲突代码—>add—>commit。
情景二:在本地当前分支上,修改冲突代码—>add—>commit—>push

3、实战演示

(1)情景
  本地库中两个不同分支,修改同一个文件同一代码块,两分支先后将修改合并到master分支上,master在合并第二个分支代码时,报错:合并冲突。
(2)本地库

<1> master分支
在这里插入图片描述
在这里插入图片描述
<2> 建立两个分支

在这里插入图片描述
<3> 两分支修改提交

aBranch分支:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
bBranch分支:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(3)合并分支产生冲突

合并aBranch分支(将aBranch分支合并到当前master分支上):

在这里插入图片描述
在这里插入图片描述
注:
git merge:默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。
使用–no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,建议采用这种方法。
再合并bBranch分支,产生冲突:

在这里插入图片描述
在这里插入图片描述
(4)解决冲突

在当前分支上(master),找到冲突文件,直接修改冲突代码,add,commit。
在这里插入图片描述
注:简单方法,使用vim修改,cat查看冲突文件。(注意要删除git自动生成的冲突代码分隔符)

(5)完成冲突解决

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些常见的Vue面试问题及其答案: 1. 什么是Vue.jsVue.js是一个用于构建用户界面的渐进式JavaScript框架。 2. Vue.js的主要特点是什么? Vue.js的主要特点包括: - 双向数据绑定 - 组件化开发 - 虚拟DOM - 模板语法 - 生命周期 - 插件系统 3. Vue.js与React的区别是什么? Vue.js与React的区别包括: - Vue.js有更简单的模板语法,React则使用JSX语法 - Vue.js有更好的文档和程 - Vue.js的学习曲线更平滑 - Vue.js的性能比React更好 4. 什么是Vue.js的双向数据绑定? 双向数据绑定是指当数据发生变化时,视图也会随之更新;反之,当视图发生变化时,数据也会随之更新。Vue.js使用v-model指令实现双向数据绑定。 5. 什么是Vue.js的组件化开发? 组件化开发是指将页面拆分成多个组件进行开发,每个组件都有自己的状态和行为,可以独立地进行开发和测试。Vue.js使用组件化开发可以提高代码复用性和可维护性。 6. 什么是Vue.js的虚拟DOM? 虚拟DOM是指在内存中创建一个虚拟的DOM树,当数据发生变化时,Vue.js会先通过diff算法计算出需要更新的部分,然后只更新这些部分,从而提高性能。 7. Vue.js的生命周期是什么? Vue.js的生命周期包括: - beforeCreate - created - beforeMount - mounted - beforeUpdate - updated - beforeDestroy - destroyed 8. 什么是Vue.js的插件系统? 插件系统是指可以通过编写插件来扩展Vue.js的功能。插件可以添加全局方法或者组件、混入等。Vue.js的插件系统使用Vue.use方法来安装插件。 以上是一些常见的Vue面试问题及其答案,希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值