git设置:合并分支时只合并某些文件,或忽略某些文件

最近碰到了一些棘手的分支管理,需要管理多个分支,比如 国内分支,国际化分支,印度分支(政治原因),newAuthority(新权限系统分支),oldAuthority(旧的权限系统分支,兜底方案)

很多分支同时存在,然后分支的需求的迭代可能不同,也可能相同。所以git分支管理,需提前做好功课

接下来介绍

  1. git 只合并某个目录/文件
  2. git 合并分支时 忽略某个文件(比如webpack打包后的dist文件)

1. git 只合并某个目录/文件

git checkout 分支名 目录/ 目录2/

  • 比如:git checkout pmc dist/**
  • (目录下可能还有多个目录所以用/* 不用/,单独只合并某个文件的话,路径准确就行)

2. git 设置 合并分支时 忽略某个文件(比如webpack打包后的dist文件)

在dev分支根目录里面加上文件:.gitattributes,设置为 dist/** merge=ours

git设置:合并分支时只合并某些文件,或忽略某些文件 - 图1
终端设置输入:git config —global merge.ours.driver true,就可以在分支合并的时候忽略dist目录。

git设置:合并分支时只合并某些文件,或忽略某些文件 - 图2

但是这里要生效的话,需要注意提交顺序问题

  • 比如,我们在dev分支,要去合并v1.0分支。
  • 切换到v1.0,修改一下.gitattributes涉及到忽略的文件, commit提交。切回dev,再次修改涉及的忽略文件,commit提交。然后dev合并v1.0,git merge v1.0就能成功忽略.gitattributes内涉及到的文件

所以此处的标题准确说,应该是,避免合并某个文件时的冲突,而不是忽略

  • 比如要合并的v1.0分支的dist是更新过的,2分支没有冲突,就会merge到dist。如果此时我的分支内的dist,已经改变了,那么此时就会忽略v1.0内的dist 直接用当前的dist