git merge时合并代码如何忽略某些文件

问题:在我们的项目中,经常遇到不同分支需要不同的配置文件,而这些分分支在merge时,默认会被覆盖或者出现冲突,比如vite.config.js build.gradle  .gitlab-ci.yml等文件。

产生原因: 

git在merge时,会有一个默认的驱动去检查每个文件的每一行,若发现两个分支的同一个文件有不同,会认为两个分支都对这个文件做了修改,并merge两个文件,此时有可能产生冲突;

解决办法:

自定义一个merge驱动,在里面定义一些不会被检查的文件,那git就会在merge时忽略掉这些文件。

例:  实现dev分支根目录下的分支文件build.gradle和.gitlab-ci.yml不被合并到master分支:

1.在dev根目录运行命令:

git config --global merge.mydrive.driver true

定义了一个属于我们自定义的驱动,名为:mydrive

2.在项目根目录下新建文件.gitattributes,在该文件中添加”需要忽略的文件名 + merge=mydrive“

build.gradle merge=mydrive
.gitlab-ci.yml merge=mydrive
3.git提交
4. 切换到master分支,git merge dev

 

posted @ 2022-12-30 10:11  心中有一海  阅读(4431)  评论(0编辑  收藏  举报