博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用git合并分支时,如何保持某些文件不被合并
阅读量:7074 次
发布时间:2019-06-28

本文共 1310 字,大约阅读时间需要 4 分钟。

hot3.png

使用git作为版本控制工具有半年多了。目前还是在边学边用的阶段,因为git这东西内容实在是太多了,学习路线比较陡峭,而且学习过程当中时不时会冒出一些特别有意思的小tips让你十分的惊喜。因此,朋友们,如果你还没有使用git,那么现在立即使用起来吧,即使你现在对他毫无了解,因为git将会给你的开发带去无穷多的帮助,当然其入门也比较容易的。

最近在使用git时出现了这样一个场景:我们一个产品分两条线,两个小组各自开发各自的模块,最后统一发版。但是呢,由于鄙人负责的模块需求比较多,工期也少,人手嘛,只有鄙人一个(真不是在找借口,虽然另外一个组有三个人。。),因此,在开发上落后于另一组较多。为了保证其他小伙伴顺利进行下个版本迭代,我在master上开了个分支来开发当前版本,他们在master上开发下一版本。等我终于开发完成后呢,面临这样一个问题:其他小伙伴在master上修改了几个重要的文件,对产品来说是个较大的改动,因此我把分支merge回master时必须保持这几个文件不会被合并,否则将面临一大坨令人发指的冲突,并且解决冲突也容易出各种各样的问题。这时候怎么办呢?感谢伟大的互联网,让我找到一个完美的解决方案。原帖地址先贴出来,大家膜拜一下,如果能看懂英文,请直接移步该帖,否则,就听小弟勉强翻译一下吧。。。重在表达思想,本人英文水平也不足以一字一句的翻译出来。

原帖地址:

大意是说,git在merge分支时,有一个默认的merge驱动,这个驱动会去检查每个文件的每一行,如果按照一定规则发现两个分支的同一个文件有不同,那么认为两个分支都对这个文件做了修改,会merge两个文件,此时有可能产生冲突;那么如果我们自定义一个merge驱动,在里面定义一些不会被检查的文件,那git就会直接跳过这些文件,因此就不会merge啦。

步骤大概是这个样子滴:

1:创建我们的自定义merge driver:

 

git config --global merge.ours.driver true

2:在要被merge的分支上创建.gitattributes 文件,并且在文件中置顶不merge的文件名:

 

 
  1. echo 'email.json merge=ours' >> .gitattributes

  2. git add .gitattributes

  3. git commit -m 'chore: Preserve email.json during merges'

3:回到要合并到的分支(注意形容词)执行merge:

 

 
  1. (newbranch) $ git checkout master

  2. (master) $ git merge newbranch

  3. Auto-merging ...

  4. Merge made by the 'recursive' strategy.

  5. demo-shared | 1 +

  6. 1 file changed, 1 insertion(+)

经过以上步骤,我们指定的email.json就不会被合并咯

转载于:https://my.oschina.net/oliverlin/blog/2050372

你可能感兴趣的文章
Mysql学习总结(7)——MySql索引原理与使用大全
查看>>
电脑端下载今日头条的短视频
查看>>
新浪微博数据爬取
查看>>
Tile chart
查看>>
我的友情链接
查看>>
php---编译安装 PHP 的 Redis 扩展
查看>>
python ---- urllib2
查看>>
Windows的定时任务(Schedule Task)设置
查看>>
rndc: connect failed: 127.0.0.1#953: connection refused
查看>>
在论坛中出现的比较难的sql问题:12(递归问题2)
查看>>
PXE结合kiskstart实现自动化安装系统
查看>>
Mysql isam数据库恢复实战
查看>>
mysql LINESTRING ,POINT 类型操作
查看>>
centos7 双网卡双ip内外网设置最小化安装
查看>>
第十次课作业(风险管理、项目收尾、知识产权)
查看>>
如果在ecshop中自定义添加模板
查看>>
win10系统 VMWare12.5虚拟机 Ubuntu 16.04 LTS 开始我的Linux学习
查看>>
数据库 Oracle12c (三):安装与启动
查看>>
如何利用snmp协议发现大型复杂环境的网络拓扑(建议开发自动化工具的朋友可以看一下)...
查看>>
ubuntu 查看apt-get有哪些软件
查看>>