首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >马蜂窝的前端火了!遇到冲突不怕怼,强制提交就是干

马蜂窝的前端火了!遇到冲突不怕怼,强制提交就是干

作者头像
前朝楚水
发布于 2018-08-14 09:20:46
发布于 2018-08-14 09:20:46
87100
代码可运行
举报
文章被收录于专栏:互联网杂技互联网杂技
运行总次数:0
代码可运行
「 前言 」

相信大家都在世界杯期间有意无意地看到过马蜂窝的洗脑广告,短短的15秒,品牌名就出现了6次。“旅游之前,为什么要先上马蜂窝”,这些不断重复的广告词让人犹如魔咒般印象深刻。

正文开始前,先来回顾下这条病毒式广告:

有不了解的小伙伴可以上他们家的官网大概看下,马蜂窝,一家从事旅游行业的新锐互联网公司。

背景铺垫完毕之后,让我们进入今天的正题。

「 正文 」

最近马蜂窝移动端的某个线上页面出现了明显的BUG,截图在某技术社区疯传,献上页面截图供大家瞻仰一下:

前端圈里的潜规则就是,好事不出门,好玩事儿传千里。瞬间马蜂窝的前端在码农圈子里火了,爱凑热闹的程序猿们纷纷留言:

马蜂窝的前端老哥666,能跑起来也是牛逼

遇到冲突不怕怼,强制提交就是干!!!

请问贵公司还缺前端吗?我就喜欢这样自由任性的开发氛围~

人生不如意之事十之八九,合并分支往往也不是一帆风顺的

我写的代码不会有问题!报错根本不影响页面功能!ie 用户根本不用管!玛德,被开除了…

这要是搁我司,还不得被技术经理diss,一口盐汽水喷死我都是极有可能的!

领导的脑袋嗡嗡嗡...

......

其实仔细想想,发生在马蜂窝身上的这种bug在我们开发环境中很常见,并不稀奇。只要是在前端团队里呆过的码农都知道,这不就是提交代码合并分支发现冲突了,然而并没有解决就直接发布了么。

首先要想清楚一个问题,在类似马蜂窝的前端团队中,为什么git提交代码会出现冲突?

当两条分支对同一个文件的同一个文本块进行了不同的修改,并试图合并时,Git不能自动合并的,称之为冲突(conflict)。解决冲突需要人工处理。

那么让我来带领大家解读下上面截图中马蜂窝出现的bug事故分析:

<<<<<<<标记冲突开始,后面跟的是当前分支中的内容。

HEAD指向当前分支末梢的提交。

=======之后,>>>>>>>之前是要merge过来的另一条分支上的代码。

>>>>>>>之后的dev是该分支的名字。

对于简单的合并,手工编辑,然后去掉这些标记,最后像往常的提交一样先add再commit即可。

这其中就涉及到了公司前端团队协作开发的流程问题,以及git解决代码冲突的实际问题,让我们以马蜂窝的bug事故为引子,来继续深入聊聊团队协作的那些事儿。

「 git解决代码提交冲突 」

现在大部分一线互联网公司都是采用git作为公司内部版本迭代的工具,它可以敏捷高效地处理任何或小或大的项目,自然在前端团队日常协作开发的过程,出现代码提交冲突就很常见了,这也是很多刚入行的前端新人小白们在工作中经常会碰到的比较棘手的问题。

代码提交冲突一般分为两种,树冲突和内容冲突。

文件名修改造成的冲突,称为树冲突。

比如,A同事把文件改名为A.C,B同事把同一个文件改名为B.C,那么B同事将这两个commit合并时,会产生冲突。

如果最终确定用B同事的文件名,那么解决办法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1git rm A.C
2
3git rm origin-name.C
4
5git add B.C
6
7git commit

如果最终确定用A同事的文件名,那么解决办法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1git rm B.C
2
3git rm origin-name.C
4
5git add A.C
6
7git commit

总结一下:

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

git log --graph命令可以看到分支合并图。

「 前端协作流程 」

下面来说说我对前端协作流程的一点理解。

项目的可维护性第一。我们并不是一个人在做事,项目的维护和二次开发可能是直接或间接的团队合作。好的可维护性可以从四个方面获得:

代码的松藕合,高度模块化,将页面内的元素视为一个个模块,相互独立,尽量避免耦合过高的代码,从HTML,CSS,JavaScript三个层面考虑模块化。 良好的注释。 注意代码的弹性,在性能和弹性的选择上,一般情况下以弹性为优先考虑条件,在保证弹性的基础上,适当优化性能。 严格按照规范编写代码。

「 如何避免提交冲突 」

很多童鞋都把git当作个人代码备份工具,没有涉及多人提交代码到中央版本库。但是在多人使用时,不能简单地再延续原来个人使用时的习惯。如何提交才能避免版本冲突呢?

1. 首先在本地 clone 项目源码回来之后,只有一个默认分支master,不要直接在上面工作。

a.建立一个自己的分支,如取名working: git branch working

b.切换到这个新分支: git checkout working

c.现在可以自由修改代码并保存了。

2.确保你修改的代码都是自己负责项目下,或者说你的两次提交之间,没有其他人来改相同项目下的代码,如果不能避免,你就要在下面的merge步骤手工处理冲突了。

3.提交代码时按下面的步骤:(可以将下面的脚本保存在你的每个项目之下,每次只修改提交一个项目)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1git checkout working    --force  #确保使用的是工作分支
2git add .
3git commit -m"$1" -a     #提交代码到本地,工作分支增加一个版本,这里的$1是运行脚本的第一个参数
4
5git checkout master      
6git pull origin master   #切换回默认分支,并将默认分支和中央最新版本合并
7git merge working        #在本地合并你的这次修改到默认分支
8git push origin master   #提交到中央版本库,接下来还是要切换回工作分支的
9git checkout working   --force
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 交互设计前端开发与后端程序设计 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
马蜂窝的前端火了!遇到冲突不怕怼,强制提交就是干
相信大家都在世界杯期间有意无意地看到过马蜂窝的洗脑广告,短短的15秒,品牌名就出现了6次。“旅游之前,为什么要先上马蜂窝”,这些不断重复的广告词让人犹如魔咒般印象深刻。
闰土大叔
2018/08/08
8650
马蜂窝的前端火了!遇到冲突不怕怼,强制提交就是干
团队开发过程中遇到git冲突的一些填坑经历
多数情况下,git 团队开发出现的冲突,是因为本地版本号低于服务器的版本号,注意: 1,尽量在修改文件之前,git chekout更新一下; 2,如果修改公共文件,需要跟同事做好沟通,让他别修改,在你修改后,让他更新。 一些小技巧: 1.首先在本地 git clone 回来之后,只有一个默认分支master,不要直接在上面工作。 a.建立一个自己的分支,如取名working: git branch working b.切换到这个新分支: git checkout working c.现在可以自由修改代码并
rectinajh
2018/05/17
8520
Git提交规范流程和解决冲突实际使用
前言:GIT对于我们程序员来说是吃饭的工具,本篇主要是针对提交和分支以及对于大多数程序员闻风丧胆的冲突一些个人见解,如果有啥不对的或者你们公司git提交流程欢迎下方评论。
王念博客
2019/07/25
3.3K0
Git快速入门
git作为现在最为流行的版本管理系统,大部分公司都使用git进行版本控制,并且最大程序员交友网站github也是在git的基础上建立的。 很多人认为git难,在于它的一些概念与之前流行的集中化的版本管理系统有所出入,只要通过熟悉git的基本概念,以及git分支切换的流程,想要上手还是很容易的。
腾讯工蜂
2018/10/11
1.9K0
使用git命令与vscode从零开始对远程代码仓库进行拉取、提交、合并、推送分支等操作在项目中的实践
首先,我们的电脑上要有安装git,并且得在vscode里面可以使用git命令,检测是否有安装成功可在vscode的终端里面直接输入
潜心专研的小张同学
2023/01/03
10.7K0
使用git命令与vscode从零开始对远程代码仓库进行拉取、提交、合并、推送分支等操作在项目中的实践
日常开发中Git使用:常用命令汇总
Git其实就是一个开源的分布式版本控制系统,它可以有效、高速地处理从很小到非常大的项目版本管理,也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件,其实Torvalds开始着手开发Git是为了作为一种过渡方案来替代BitKeeper。
三掌柜
2024/09/07
2691
日常开发中Git使用:常用命令汇总
GIT常用指令
注:并不是修改上一次commit,而是生成新的commit取代上一次commit。
Careteen
2022/02/14
4600
GIT常用指令
Git工作流实战-超级干货(3)
本地的 master 和远程分支 origin/master 是关联起来的,origin/master 就对应着远程仓库的 master分支
全栈程序员站长
2022/06/29
4300
使用git提交代码时发生冲突的解决方法
今天是我在项目组中第一次使用Git提交代码,结果一提交就出现了冲突,后来在同事的帮助下终于提交成功了,至于造成冲突的原因是我和同事都在同一个文件中编辑了代码,同事先提交我后提交,同事能正常提交,我提交时就会有冲突,因为Git不明白该保存那个人写的代码,所以就造成了冲突。
用户3880999
2023/04/13
2K0
使用git提交代码时发生冲突的解决方法
【Git必知必会】多人协同开发,紧急修复线上bug的操作指南。
团队协作是职业生涯中必须面对的问题,Git为我们代码的协作管理提供了强大的工具。熟悉Git操作,拥抱团队协作。
王中阳Go
2022/10/26
4730
我在团队的技术分享-Git日常操作我在团队的技术分享-Git日常操作
工作流程如下: 1、从远程仓库克隆代码到本地仓库 2、在本地仓库中checkout代码然后进行代码修改 3、在提交代码前先将代码提交到暂存区 4、提交到本地仓库。本地仓库中保存修改的各个历史版本 5、修改完成后,需要和团队共享代码时,将代码push到远程仓库
Light413
2021/12/08
7740
我在团队的技术分享-Git日常操作我在团队的技术分享-Git日常操作
我看还有谁不动Git
Git 是一个开源的分布式版本控制系统,用于管理一个或多个文件的整个历史记录。它有助于跟踪文件的变化,同时让多个开发者对同一个文件做出更改,并帮助开发者们在不同时间点进行历史查阅和版本比较。
MCNU云原生
2023/03/17
1.9K0
我看还有谁不动Git
git工作方法
•   git branch working  #建立一个自己的分支,如取名working
tea9
2022/07/16
1860
Git工作流程:如何在团队中协作?
包括仓库(repository)、版本(commit)、分支(branch)等基本概念。 Git是一种分布式版本控制系统,用于管理代码的历史记录和版本控制。以下是一些基本的Git概念及其解释:
一只
2024/06/26
5420
手把手教学,如何解决 Git 冲突?
Git 是现在使用最广泛的源代码管理程序。一个合格的程序员必须要熟练掌握 Git。在使用 Git 的时候,最让人头疼的问题是什么?肯定是解冲突了。如果两个人修改了同一个文件的相同位置,那么当一个人提交代码并合并到主分支以后,第二个人尝试合并时就会触发冲突。大多数情况下,Git 自己知道如何把两份代码合并起来。但有时候当 Git 不知道应该怎么合并,就会提示你需要手动解决冲突。
崔庆才
2020/09/18
1.8K0
shell 写一个简单的 git 提交代码脚本
工作中,默认提测分支叫 staging,每次提测,都需要将开发分支合并到 staging 提测分支,并 push,才算提测,当修复一些 bug  之后,免不了反复执行同一套 git 命令,于是写一个简单的 shell 脚本,减少重复工作。
蓓蕾心晴
2022/09/24
9470
前端小微团队的Gitlab实践
首先要说的是分支管理,分支管理是git工作流的基础,好的分支设计有助于规范开发流程,也是CI/CD的基础。
程序员白彬
2020/07/10
1.6K0
前端小微团队的Gitlab实践
GIT和SVN的区别
这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。如果你能理解这个概念,那么你就已经上手一半了。需要做一点声明,GIT并不是目前第一个或唯一的分布式版本控制系统。还有一些系统,例如Bitkeeper, Mercurial等,也是运行在分布式模式上的。但GIT在这方面做的更好,而且有更多强大的功能特征。
青梅煮码
2023/03/13
7490
SourceTree使用详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决)
  俗话说的好工欲善其事必先利其器,Git分布式版本控制系统是我们日常开发中不可或缺的。目前市面上比较流行的Git可视化管理工具有SourceTree、Github Desktop、TortoiseGit,综合网上的一些文章分析和自己的日常开发实践心得个人比较推荐开发者使用SourceTree,因为SourceTree同时支持Windows和Mac,并且界面十分的精美简洁,大大的简化了开发者与代码库之间的Git操作方式。该篇文章主要是对日常开发中使用SourceTree可视化管理工具的一些常用操作进行详细讲解。
追逐时光者
2020/06/24
28.5K0
SourceTree使用详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决)
史上最详细Git使用教程[通俗易懂]
每个开发都可以从master上克隆一个本地版本库,就算没有网络,也可以提交代码到本地仓库、查看log、创建项目分支等等
全栈程序员站长
2022/08/12
7940
史上最详细Git使用教程[通俗易懂]
推荐阅读
相关推荐
马蜂窝的前端火了!遇到冲突不怕怼,强制提交就是干
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档