应用程序在将分支与主分支合并时出现合并冲突(laravel+vue)。

6

我正在使用 LaravelvueJs 开发一个应用程序。在构建应用程序时,npm run watch 命令会监视所有相关文件的更改并重新编译 app.js。第一次,我创建了一个主分支和两个不同的分支的存储库(假设在 github/gitlab/bitbucket等处)。

问题是当我们推送到分支或将其合并到主分支时,在 public/js/app.js 中出现了许多冲突。我猜这是因为在使用 npm run watch 构建应用程序期间,每个更改都会重新编译 app.js。因此,存储库中的旧 public/js/app.js 会在新的 public/js/app.js 中遇到 合并冲突。如果我忽略 app.js,那么当多个开发人员同时工作时,这些更改将如何影响应用程序呢?在这种情况下,当应用程序由两个或更多开发人员开发并使用 github、gitlab、gitbucket等来合并代码时,该怎么办呢?能否有正确的解决方案呢!

2个回答

9

在你的.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`目录中(对于CSS和SCSS也是一样)。

我们是两个人,正在同一个项目中工作。当我们同时工作时,如果app.js被重新编译,则我们的两个app.js由于重新编译的原因而不同,对吗?如果是这样,那么如何合并这两个文件呢? - Rashed Hasan
1
不要合并它!在本地删除该文件并在.gitignore中忽略它,提交并推送,并告诉其他开发人员拉取,因为它不应该被推送到git,否则你将始终遇到合并冲突。 - Salim Djerbouh
我有些困惑。当重新编译时,不会改变app.js内部的代码吗? - Rashed Hasan
是的,但这些更改是由webpack生成的,其他开发人员不会自己阅读这些更改,重要的是resources/js/app.js中的更改。 - Salim Djerbouh

0

你不应该将编译后的文件放在git中,从你的git仓库中删除public目录下的app.js文件。你的朋友只需要在他的机器上运行npm run prod就可以获取更新后的app.js。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接