昨天dmp上线了

本来整个流程是

1.在本地1.4分支开发,开发完成push到origin/1.4,在远程仓库把1.4 merge到master分支

2.本地online分支先pull一下远程online分支,再pull master分支

3.本地执行 gulp build:dev命令 构建线上代码  生成build、views/build以及public/build三个文件夹

4.online分支push到origin/online 测试发布上线 上线的是远程online分支

但是我昨天不知道具体进行了什么操作 到现在我都没想通 好像是我当时在online分支 修了个问题 没注意是online分支 就在本地gulp了一下 用的命令不是gulp build:dev

对照gulpfile.js的命令 会把views/build以及public/build两个文件夹清除(注意,此时没有清除build文件夹),接着因为build:localhost命令没有复制静态文件那些命令,所以不会生成views/build以及public/build这两个文件夹

到这也没什么问题 我下一次执行 gulp build:dev 会重新生成这三个build文件夹的

gulpfile.js的构建命名(部分:

gulp.task('build:localhost', function() {
env = 'localhost';
return runSequence(
'clean:init', // 初始化清除文件
'less:lo', // 编译less
'clean:end', // 结束清除文件
'nodemon' // 代码部署
)();
}); gulp.task('build:dev', function() {
env = 'development';
return runSequence(
'clean:init', // 初始化清除文件
'concat', // 合并js
'js', // 复制压缩业务js
'otherjs', // 复制其他js
'images', // 复制图片
'fonts', // 复制字体
'font', // 复制字体
'file', // 复制文件
'txtCopy', // 复制txt模板
'vendor', // 自动化测试脚本
'QA', // 自动化测试脚本
'less:dev', // 编译less
'util', // 复制js插件
'valid', //
'utilJs', // 插件js压缩
'utilCss', // 插件css压缩
'htmlmin', // 模板压缩
'clean:end' // 结束清除文件
// ,'nodemon' // 代码部署
)();
}); gulp.task('clean:init', function () {
return gulp.src(['views/build', 'public/build', 'public/css', 'public/dist', 'rev-manifest.json', 'public/**/*.map', 'upload/*'], {read: false}).pipe(clean());
}); gulp.task('clean:end', function () {
return gulp.src(['public/dist', 'rev-manifest.json'], {read: false}).pipe(clean());
}); 

后边切到master分支 然后修了两个小问题 push到远程master也没出错 然后准备到online分支合代码

但是切online分支时提示我本地有未提交的修改 提示的内容是online分支的.gitignore文件 和  build文件夹

online分支的.gitignore如下:

node_modules
public/css
demo
npm-debug.log

master分支的.gitignore:

node_modules
public/css
demo
upload
views/build
public/build
npm-debug.log
build

就是除了online分支的其他分支是不对build文件夹进行版本管理的 ,仓库里不会跟踪它的变化

我明白了 我当时应该是把master分支当成online了,pull了远程online代码到本地master了。。。--_--(什么骚操作)

这样master不仅多了个build文件夹 还对build进行了跟踪

所以切分支时会提醒我有未提交的更改 然后我push到远程master也有了这些文件夹

按理说这个时候我再切到online分支应该是没问题的 但是又报错:

git -c diff.mnemonicprefix=false -c core.quotepath=false checkout online err 

这个问题是我本地仓库配置出了问题,重新拉一个仓库就没有这个问题

用BeyondCompare对比了一下两个仓库的代码 之前那个仓库的代码有点问题 替换掉就好了

这时候再切回online分支 合代码  上线 就结束了


今天早上我想了一下 还是得把master分支的build文件夹删了 把它的.gitignore文件重置成之前那样 master分支不跟踪三个build文件夹

解决办法是:

1.在本地删除master分支的build文件夹  修改.gitignore 加上 build、views/build、public/build这三行

2.提交修改 git commit -m 'update'

3.git push 更新远程代码

4.本地切到online分支,拉一下master代码,这时online的.gitignore文件会被更新 但是我们不需要这个文件被更新(online需要跟踪三个build文件夹)  ,

 不过需要保证它的更改时间是最新的(这样拉取master代码的时候这个文件不会被更改),所以把online的这个文件改回去

5.commit并push到远程online

这样虽然online上的.gitignore为最新的,但是每次上线前只会拉最新的master代码到online上,不会把online分支往master上合,于是online的.gitignore的内容不会同步到master上,

保证了master和online的.gitignore不一致,master不会跟踪build文件夹 而online继续跟踪build文件夹

大功告成!!@_@

记一次git翻车事件的更多相关文章

  1. 记一次系统崩溃事件【Mac版】

    事件:Mac系统崩溃,导致电脑数据丢失,以及数据安全备份措施的不到位的教训! 解决措施: 1.开机后按:Command+R 按开机键 ,进入Mac 实用工具, 选择磁盘工具.由于没有备份直接抹掉磁盘. ...

  2. 记一次git amend事故处理方案

    一.问题回顾 问题是git commit --amend 引起的. 一条commit已经push到远端develop了,但是后来又在这条commit上进行了amend操作,导致这条commit的哈希码 ...

  3. 记一次git fatal: Unable to find remote helper for 'https'问题的解决

    登陆到远程linux服务器上,使用git, clone的时候报“fatal: Unable to find remote helper for 'https'”错,没管,绕过,使用git clone ...

  4. 记一次 Confluence 被攻击事件

    故事开始 4 月 14 日,星期天,天气不好,呆在家玩 LOL,正 Happy 的时候同事打电话给我,说 Confluence 看文档的时候挂了,报错:502. 一寻思,不就挂了吗,小意思,重启呗,于 ...

  5. 记一次Git提交报错的问题

    通常代码版本控制的步骤是: 在代码版本控制平台新建一个仓库 clone远程仓库到本地 开始编码,然后是一系列add,commit,push 我的步骤是: 在远程代码版本管理平台新建一个仓库 在本地新建 ...

  6. 记一次肉机事件--yam

    背景: 研发同事反应他自己的测试机器,有一个yum程序占用cpu很多,接近100%,然后他就将这个程序kill了.我一看他给我发的截图,原来不是“yum”,而是“yam”,第一反应就是让人当肉机了.上 ...

  7. 记一次git merge 事故

    最近发生在自己身上的一件矬事儿,一不小心把matser上别人的代码给冲掉了,事后追溯了下原因. 1.准备三个分支,分别从master拉取 realease/v1.0分支 和 realease/bugf ...

  8. 小杨同学git使用记(适合使用过git但是不熟练的童鞋)

    首先声明:这不是一篇git使用手册或者指南,如果要详细的git使用指南,下面是廖雪峰的git教程,可以系统学习廖雪峰的git教程,当然,如果你想马上以一种正确的方式使用git,那么接下来你很快就会学会 ...

  9. git使用和理解之一(不含分支)

    0.前言 Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 工作区和暂存区: 我们写代码的地方就是工作区,代码写完后, ...

随机推荐

  1. Python绘图的颜色设置

    (转载):Python中的matplotlib函数中的颜色选取 转载链接:https://www.cnblogs.com/darkknightzh/p/6117528.html 原文内容:完全出自于自 ...

  2. linux centos 中访问linux 共享文件方法

    mount -t cifs -o username="administrator",password="" //192.168.1.101/cp /mnt/nt ...

  3. [java,2019-01-28] 枪手博弈,谁才是最后赢家

    什么是枪手博弈: 枪手博弈指彼此痛恨的甲乙丙三个枪手准备决斗.甲枪法最好,十发八中.乙枪法次之,十发六中.丙枪法最差,十发四中.假设他们了解彼此实力,也能做出理性判断. 问题一:如果三人同时开枪,并且 ...

  4. consul的安装与使用

    consul官网下载地址 https://www.consul.io/downloads.html 下载后解压 在bat文件中增加如下内容,就可以双击启动了 start consul agent -d ...

  5. 【学习】如何安装GraphLab Create 【转载】

    前人走过的路不用再走,慢慢加上一些工具的链接 GraphLab Create安装,链接地址: http://www.imooc.com/article/18094?block_id=tuijian_w ...

  6. (11)ssh免密登录配置

    ***在Linux命令行中登录到另一台虚拟机(需要用到ssh协议) Linux中默认有ssh的服务器端和客户端,客户端的名字就叫ssh 前提是当前使用的用户名在待连接的虚拟机中存在 格式:  ssh ...

  7. ubuntu安装后环境配置

    首先实现能够连接外网,宿主机和虚拟机能ping通 进行smb的配置,能实现pytty的远程连接. 首先apt-get update 安装ssh apt-get install ssh 打开ssh服务 ...

  8. mycat数据中间件、nginx

      MyCat & Nginx  课程目标 目标1:理解MyCat分片,能够配置MyCat分片 目标2:掌握Nginx的安装与静态网站部署 目标3:掌握Nginx的静态网站部署 目标4:理解N ...

  9. azkaban工作流调度器及相关工具对比

    本文转载自:工作流调度器azkaban,主要用于架构选型,安装请参考:Azkaban安装与简介,azkaban的简单使用 为什么需要工作流调度系统 一个完整的数据分析系统通常都是由大量任务单元组成: ...

  10. [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境

    快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...