通常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

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐