git merge覆盖当前分支

git merge覆盖当前分支

有这么一种场景,我们需要 merge 某个 feature 分支到 master 分支,且希望合并后master 分支与 feature 分支的内容完全一致。

当 feature 分支与 master 分支没有分叉时,直接 merge 即可,默认执行 fast-forward 后两个分支指向同一个 commitid。而当 feature 分支与 master 分支存在分叉时,git 没有对应的命令或参数来完成目标。

查看 git merge 可以通过-s参数指定合并的策略,其中有个ours策略,合并其他分支的同时可以保持合并后的内容与当前分支一致。这个策略与我们的目标完全相反。但是 git merge 并没有提供theirs策略。

相似的是,在recursive合并策略中,可以通过-X参数指定遇到合并冲突时的解决方式,其选项可以为ours或者theirs,即冲突时使用当前分支的版本或者合并分支的版本。但是我们并不能通过recursive策略配合-X theirs来实现我们的目的,因为-X仅在遇到冲突时起作用。如果master分支上的某个 commit 与 feature 分支没有冲突,那么合并后该 commit 会保留下来,而这是 feature 分支不需要的。

目前而言,我们只能使用一些迂回操作来实现类似theirs策略。

  1. 先在 master 上创建一个无意义的 merge commit,commit 的内容不重要,因为后续将要通过 amend 修改。
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值