合并代码时候不同分支的配置文件经常不一样,比如vue.config.js、deploy.yml,每个分支都需要保持自己的配置文件,从自己分支合并到dev分支或者maser分支时不受影响。
首先git merge大致是这样的逻辑(可以去看英文原文):git在merge分支时,有一个默认的merge驱动,这个驱动会去检查每个文件的每一行,如果按照一定规则发现两个分支的同一个文件有不同,那么认为两个分支都对这个文件做了修改,会merge两个文件,此时有可能产生冲突;那么如果我们自定义一个merge驱动,在里面定义一些不会被检查的文件,那git就会直接跳过这些文件,因此就不会merge,而我们自定义的这个merge驱动就是 ours。
下面直接举个例子来给出操作步骤 吧:
比如要

实现dev分支根目录下的分支文件readme.txt,不合并到master分支上

实现dev的分支文件/common/src/main/resources/deploy.yml,不合并到master分支上
操作步骤如下:

1、根目录运行命令:

git config merge.ours.driver true    //开启忽略文件配置

2、在项目根目录下新建文件.gitattributes,然后文件中写入需要忽略的文件名 + merge=ours, 一个文件占一行.在dev分支上建立.gitattributes 文件并提交 内容如下:

readme.txt merge=ours
/common/src/main/resources/application.yml merge=ours

3、切换到master分支上merge

git checkout master
git merge dev

4、最关键点,如果是第一次操作/common/src/main/resources/application.yml则需要以下顺序:先修改dev分支的文件并提交,再修改master的文件并提交,然后merge,才能成功

因为.gitattributes首次识别时是由文件的更新时间来确定保留识别的,如果dev的某个文件的修改不想合并到master分支上的话,那么master的文件上的修改时间必须在dev的修改时间之后,否则忽略不成功。以后dev再对该文件的修改就不会合并到master上了。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐