前言
最近项目在开发合并代码的时候,不同分支的配置文件经常不一样,比如.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 master git merge dev
此时合并就不会把test.txt文件合并到master分支了
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net