git merge 分支 合并 策略

场景需求

主分支(master)合并特性分支(dev)的更改到主分支,同时忽略其中某些文件。比如说忽略配置文件,这个比较常见。

为了解决这个问题,我们可以利用 git 提供的合并策略来实现。

创建并开启自定义驱动

master# git config --global merge.ours.driver true

配置驱动策略

master# echo 'index.php merge=ours' >> .gitattributes
master# git add .gitattributes
master# git commit -m 'chore: Preserve index.php during merges'

查看策略配置

master# ls -al
master# cat .gitattributes
index.php merge=ours

测试合并策略

master# git checkout dev
dev# git rebase master
这里有冲突解决冲突,然后合并index.php,
再修改index.php中的内容和master中的index.php内容不同,待会儿查看结果。
dev# git checkout master
master# git merge -s ours dev

查看结果

master主分支和dev分支的index.php内容不同,

dev分支index.php并没有合并到master分支中,说明我们的合并策略生效。

注意问题

  • 如果是要忽略目录,比如是src/,需要写成src/**,这点和.gitignore中的写法略有区别

  • 如果采用rebase方式合并,一定要注意启用 git config --global pull.rebase true

  • 目的分支(master)内容可以合并到参考分支,参考分支(dev)中被加入到合并策略的文件不会合并到目的分支,

    • 也就是说 master 中的可以合并到dev,dev中的不能合并到master,这也是我们的初衷。

参考文档

https://www.jianshu.com/p/cec1539c0a33

https://segmentfault.com/a/1190000004965378

https://git-scm.com/docs/git-merge#_description

https://git-scm.com/docs/gitattributes

https://blog.yowko.com/2017/05/git-attributes-merge-strategy.html?m=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值