https://www.cnblogs.com/xuan52rock/p/13268872.html
https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#_merge_strategies

背景

每次合并代码的时候,最容易冲突的的就是vue.config.js和dist文件夹
其实我们的vue.config.js一般需要同步的是项目配置,但是我们冲突的往往是代理配置,每一次迭代都是不同的业务,代理都是不同的,导致每次进行代码合并的时候都会冲突,那如何可以避免这种冲突呢,永远保持最初的一份

解决方案

git有一个合并策略,文章是这么说的:

您还可以使用 Git 属性告诉 Git 对项目中的特定文件使用不同的合并策略。一个非常有用的选项是告诉 Git 在特定文件有冲突时不要尝试合并它们,而是使用你的合并而不是其他人的合并。

只需要两步:
第一步:
在项目里面添加文件.gitattributes,内容如下:

  1. // 置顶合并时你要忽略的文件名称,比如vue.config.js
  2. vue.config.js merge=ours

第二步:
全局配置git

  1. git config --global merge.ours.driver true

此时你再把其他分支的代码合并过来的时候,vue.config.js不会进行合并,仍旧保存的是你当前本地的这一份配置
使用git合并策略进行特例文件的合并时忽略 - 图1

升级一下

项目里面如果我们直接把vue.config.js忽略,肯定是不行的,因为有的时候,确实会出现修改项目配置的情况,并且需要整个项目统一,所以我们可以把代理配置作为一个文件导入,这样我们就可以合并忽略导入的js了
第一步:
新建js——devServer.js:

  1. // let dataUrlDev = 'http://xxxx.com'
  2. let dataUrlDev = 'http://xxxx.com'
  3. module.exports = dataUrlDev

第二步:
在vue.config.js里面导入devServer.js

  1. const dataUrlDev = require('./devServer');
  2. // ...
  3. module.exports = {
  4. ...
  5. devServer: {
  6. port: 8080,
  7. open: false,
  8. host: '0.0.0.0',
  9. proxy: {
  10. '/xxx': {
  11. target: dataUrlDev,
  12. changeOrigin: true
  13. }
  14. // ...

第三步:
修改.gitattributes文件

  1. devServer.js merge=ours

再往后,我们在进行分支合并的时候,就不会出现devServer文件相互覆盖的情况了
后续这种合并策略有什么优势,可以再挖掘一下