与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 【问题描述】:

我正在使用LaravelvueJs 开发应用程序。在构建应用程序期间,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 分支管理 ( 解决分支合并冲突 | 本地处理文件冲突 )

5-具体学习git--分支冲突,merge合并

使用合并冲突重新设置基础:如何撤消?

17.分支的合并&遇到冲突时的分支合并

GitGit 分支管理 ( 解决分支合并冲突 | 推送主版本和分支版本到远程仓库 | 合并分支出现文件冲突 )

GitGit 分支管理 ( 解决分支合并冲突 | 推送主版本和分支版本到远程仓库 | 合并分支出现文件冲突 )