【问题标题】:app js getting merge conflict when merging branch with master (laravel+vue)与master合并分支时app js出现合并冲突(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 等合并代码时,应该如何解决。请有人建议我正确的方法!

【问题讨论】:

    标签: laravel git vue.js deployment node-modules


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-04
      • 1970-01-01
      • 2011-04-25
      • 2021-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多