前言

最近我的项目在开发合并代码的时候,不同分支的配置文件常常不一样,比方.env、.gitlab-ci.yml,每个分支都须要放弃本人的配置文件,从本人分支合并到maser分支时不受影响。本文次要记录如何在合并分支时疏忽某些文件或者目录。

首先git merge大抵是这样的逻辑:git在merge分支时,有一个默认的merge驱动,这个驱动会去查看每个文件的每一行,如果依照肯定规定发现两个分支的同一个文件有不同,那么认为两个分支都对这个文件做了批改,会merge两个文件,此时有可能产生抵触;那么如果咱们自定义一个merge驱动,在外面定义一些不会被查看的文件,那git就会间接跳过这些文件,因而就不会merge,而咱们自定义的这个merge驱动就是 ours。
  • 例如要实现dev分支根目录下的文件test.txt,不合并到master分支上

    操作步骤

    1. 定义虚构的合并策略

    根目录运行命令

    git config --global merge.ours.driver true

    2. 编辑规定文件

    在我的项目根目录下新建文件.gitattributes,而后文件中写入须要疏忽的文件名 + merge=ours, 一个文件占一行.在dev分支上建设.gitattributes 文件并提交 内容如下:

    test.txt merge=ours 

    3. 合并文件

    git checkout mastergit merge dev

    此时合并就不会把test.txt文件合并到master分支了