该文章已同步收录到我的博客网站,欢迎浏览我的博客网站,xhang’s blog
1. .gitattributes 文件的作用
.gitattributes 文件是 Git 版本控制系统中的一个配置文件,它用于指定 Git 如何处理文件的二进制数据,以及如何标识文件的类型。
具体来说,.gitattributes 文件的作用包括以下几个方面:
- 指定二进制文件的类型:在.gitattributes 文件中,可以指定某些二进制文件的类型,例如文本文件、HTML 文件、CSS 文件等。这样,Git 就可以根据文件的类型来自动处理这些文件,例如将文本文件自动转换为 HTML 文件。
- 设置 Git 如何处理这些文件:在.gitattributes 文件中,可以指定 Git 如何对文件进行处理。例如,可以指定 Git 如何处理这些文件的提交、标记、合并等操作。
- 自定义文件类型的标志符:在.gitattributes 文件中,可以自定义文件类型的标志符。这样,当 Git 遇到这些文件时,就可以根据标志符来自动处理这些文件,例如将这些文件自动添加到某个分支中。
- 禁用文件的自动处理:在.gitattributes 文件中,可以禁用某些文件的自动处理。例如,可以禁用 HTML 文件的自动转换为 CSS 文件的功能,这样,即使用户手动将 HTML 文件转换为 CSS 文件,Git 也不会自动处理这些文件。
总的来说,.gitattributes 文件是 Git 中非常重要的一个配置文件,它可以帮助用户更好地控制 Git 如何处理文件,以及如何自动处理文件。
2. git Merge的逻辑
首先git merge大致是这样的逻辑:git在merge分支时,有一个默认的merge驱动,这个驱动会去检查每个文件的每一行,如果按照一定规则发现两个分支的同一个文件有不同,那么认为两个分支都对这个文件做了修改,会merge两个文件,此时有可能产生冲突;那么如果我们自定义一个merge驱动,在里面定义一些不会被检查的文件,那git就会直接跳过这些文件,因此就不会merge,而我们自定义的这个merge驱动就是 ours。
3. 自定义Merge驱动
3.1设置全局 merge 操作的策略
在项目根目录下使用以下命令设置全局merge操作的策略
git config --global merge.ours.driver true
3.2在项目根目录下添加.gitattributes 文件
在项目根目录下添加.gitattributes文件(与.git文件同级),在该文件中写入需要忽略的文件(支持通配符)
下面文件表示,在分支合并的时候忽略以下文件的merge
**/resource/application.yml merge=ours
**/resource/application-dev.yml merge=ours
**/resource/application-test.yml merge=ours