与master合并分支时app js出现合并冲突(laravel + vue)
Posted
技术标签:
【中文标题】与master合并分支时app js出现合并冲突(laravel + vue)【英文标题】:app js getting merge conflict when merging branch with master (laravel+vue) 【发布时间】:2020-01-24 15:45:51 【问题描述】:我正在使用Laravel
和vueJs
开发应用程序。在构建应用程序期间,npm run watch
命令监视所有相关文件的更改并在检测到更改时重新编译app.js
。第一次,我创建了一个存储库(假设在 github/gitlab/bitbucket 等),其中包含一个 master 分支和两个不同的分支。
现在,问题是当我们要推送到分支或与主分支合并时,public/js/app.js
会出现很多冲突。我想,我知道原因。这是因为,在使用npm run watch
构建应用程序期间,每次更改都会重新编译app.js
。因此,存储库中的旧public/js/app.js
将获得新public/js/app.js
中的merge conflict
。如果我忽略app.js
,那么当多个开发人员同时工作时,这些更改对应用程序的影响。在这种情况下,两个或多个开发者共同开发应用,使用 github、gitlab、gitbucket 等合并代码时,应该如何解决。请有人建议我正确的方法!
【问题讨论】:
【参考方案1】:忽略 .gitignore
中的已编译文件,因为除非您的服务器中没有 nodejs
,否则没有理由将它们推送到您的存储库中
.gitignore
:
/public/js/app.js
然后运行
npm install
npm run prod
准备好部署时在您的服务器中
纠正步骤
rm public/js/app.js
echo "/public/js/app.js" >> .gitignore
git commit -m "ignore compiled asset"
git push
npm run watch
我通常会忽略公共目录中所有已编译的资产
/public/js/*
/public/css/*
/public/fonts
因为它更干净、更快速地推送(因为编译的资产大小 +1MB 很大)在 node_modules
中拥有所有依赖项并将 javascript 作为 ES6 模块写入 resources/js
或以前的 resources/assets/js
和 SASS 和CSS
【讨论】:
我们是两个,在同一个项目中工作,当我们同时工作时,如果app.js
重新编译,那么我们的两个app.js
由于重新编译原因是不同的,不是吗?如果是,那么如何合并这两者。
不要合并它!在本地删除文件并在.gitignore
中忽略它,提交并推送并告诉其他开发人员拉取,您将始终遇到合并冲突,因为它不应该在 git 中推送
我很困惑。重新编译时,是不是改变了app.js
里面的代码?
是的,但是这些更改是由 webpack 生成的,其他开发人员不会自己阅读这些更改,重要的是 resources/js/app.js
中的更改【参考方案2】:
你不应该把编译后的文件放在 git 中,从你的 git 存储库中删除你公共目录中的 app.js。您的朋友只需在他的机器上运行 npm run prod 即可获得更新的 app.js。
【讨论】:
以上是关于与master合并分支时app js出现合并冲突(laravel + vue)的主要内容,如果未能解决你的问题,请参考以下文章
GitGit 分支管理 ( 解决分支合并冲突 | 本地处理文件冲突 )