git merge合并忽略某些文件
通常git上都有两三个分支,release,debug。。。,每个分支有些配置是不一样的,这样的话当你merge时就要避免这些文件,
那如何避免呢,好大坑啊。
新建一个 .gitattributes这个文件用于指定非文本文件的对比合并方式。
假如你要避免这个文件,config.xml,哪如何操作呢。
1,
需要添加一个 merge driver:
git config --global merge.ours.driver true |
2,在这个.gitattributes(前缀有个点)
在文件里添加需要被忽略的文件:
config.xml merge=ours |
3,git push 提交一下然后你就可以进行merge了。
但是这样merge时还是没有把config.xml给忽略,这是啥情况???
原来gitattribute
方法生效是有条件的,跟文件的修改顺序有关系,只有先修改的往后来修改的合并的时候才会生效。这里的先后是指文件的最后修改时间,不是创建的时间,如果最近修改过,那它就是最新的,比如刚才的例子,我们修改了publish
分支的info.plist
,而没有对另外两个分支下的info.plist
进行修改,那么publish
分支下的info.plist
就比另外两个分支新,这时候合并的时候,gitattribute
就会失去作用,那么该如做呢,我们在修改完publish
分支后,需要再次修改另外两个分支下的plist
配置文件,即使没啥可以改的,也要改(可以先改错,再改回去)这样我们publish
分支下的,就会仍然保持最旧。
举例:
release和debug都有个配置项文件:config
如果合并时你要忽略config,那你要先改debug分支的config,然后再改release分支的config,
这样你在release分支下进行:git merge debug时就会忽略config文件。
先后顺序很重要!!
感谢这位仁兄的文章,https://www.jianshu.com/p/716fafb6f39e
更多推荐
所有评论(0)