关于git:Git分支合并merge时忽略某个文件或者目录

23次阅读

共计 615 个字符,预计需要花费 2 分钟才能阅读完成。

前言

最近我的项目在开发合并代码的时候,不同分支的配置文件常常不一样,比方.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 分支了

正文完
 0