2

背景

背景是之前搭建了一个vue的专题类开发项目。功能主要是支持单页面的专题类开发,并可以通过文件夹名字进行分项目打包再通过Docker部署。出发点是在多人开发不同专题活动的时候避免冲突,然而在经历了一次3人开发过程中还是出现了冲突,冲突主要出现在打包后的dist目录。因此降低合并test/online分支出现充突的概率成为该工程的痛点。

实践结论

在多人协同开发中,往往有一些个性化配置文件是不需要合并到online分支的,比如记录我们的配置之类的文件,那么在我们修改后在online合并dev分支时这些文件可能会被覆盖或是冲突,我们可能需要手动去再次维护这些文件。
所幸git为我们提供了这种场景的功能——合并策略(文档直通车)。

以下为官方文档关于合并策略概念的摘抄:
通过 Git 属性,你还能对项目中的特定文件指定不同的合并策略。 一个非常有用的选项就是,告诉 Git 当特定文件发生冲突时不要尝试合并它们,而是直接使用你这边的内容。

官方文档有些地方写的比较模糊,这里把整体流程通过步骤方式全部列举出来,照抄即可:

步骤一:定义一个虚拟的合并策略,全局配置不依赖任何项目任何分支

git config --global merge.ours.driver true

PS:可以通过git config -l查看是否启用以及其他配置。

步骤二:在你项目中的online/master/生产等主干分支的根目录(与.gitignore同级)添加一个配置文件.gitattributes

步骤三:在.gitattributes中添加你要忽略合并的文件(夹)

dist/**/* merge=ours
vue.config.js merge=ours
nginx_activity.config merge=ours
Dockerfile merge=ours

步骤四:切换其他分支,修改一下涉及到忽略的文件。切回主干分支,merge验证。


271626514
95 声望7 粉丝