git 提交两次commit到同一分支,被糅合为一次Marge Request的解决方法:cherry-pick

本文详细介绍了在Git操作中,当两次commit被错误地合并为一次Merge Request时,如何通过使用Cherry-Pick命令来分离提交,以确保每次代码更新都能独立显示。具体步骤包括创建新分支、选择性地应用特定commit,以及重新推送更改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简 述: git 提交两次commit到同一分支,且也push到同一个远程仓库的分支,会被糅合为一次Marge Request的解决方法:使用cherry-pick解决

同步博文:


需求背景:

我在本地分支master进行编码完成,然后请求合并代码,进行了如下行为:

  1. commit A1 , 然后 push1 到 self 仓库;
  2. 网页gitLab上请求合并到公共分支origion;
  3. commit A2 , 然后 push2 到 self 仓库;

然后我写A3的时候,意识到有如下情况会发生,赶紧新建一个新的分支branch_a3 临时保存一下A3修改

【问题】这个时候, 问题就产生了,origion 的 master 会自动将A1 +A2 的两次修改看做一次 Marge Request ;但是我想要的是,当做两次Marge Request 提交记录 ?现在的各个分支,情况如下图:


解决方案:

先来看一些远程仓库名称,作为背景:origion 是所有人请求合并的公共远程仓库,self 是自己从origion 进行 fork的个人远程仓库,如图:


可行思路:

  1. ----------以下为单独抽取A2进行一次提交请求合并-----------
  2. 先进行回退到 A0 版本: reset A0
  3. 新建分支和跳转到 newBranch
  4. 使用 cherry-pick A2 ; 只获取A2 的代码改动 添加到 newBranch 分支的 A0上面
  5. 再次推送到self的新的newBranch分支 (到这里已经把A2单独作为新的分支,提交一次改动)
  6. 网页进行请求合并
  7. -----------以下为A1+A2 恢复为 A1-----------
  8. checkout 跳转到 master 分支
  9. 先进行回退到 A1 版本:reset A1
  10. 再次推送到self的旧的master分支 (origion 的A1 提交也会自动刷新覆盖,只有A1提交)

命令实现:

466e5d0  A0
73e40aa  A1
b7a3dc5  A2

git reset --hard 466e5d0
git checkout  -b newBranch
git cherry-pick 73e40aa
git push self newBranch -f
网页进行请求合并

git checkout master
git reset --hard b7a3dc5
git push self master -f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偕臧x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值