You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将个人Fork仓库中已Cherry-pick的Commit A更新为修订后的Commit A.1

把Cherry-pick的Commit A更新为A.1的解决方案

当然可以更新!下面是两种稳妥的方法帮你把fork仓库里的Commit A替换成修订后的A.1,同时保留你后续的Commit B:

方法一:重置后重新Cherry-pick(直观易操作)

  • 首先确保本地已经拉取了原仓库的最新代码(如果还没添加原仓库远程,先执行git remote add upstream <原仓库的Git地址>):
    git fetch upstream
  • 切换到你的工作分支(也就是包含Commit A和B的分支):
    git checkout your-feature-branch-name
  • 找到你之前Cherry-pick的Commit A的哈希值(可以用git log查看),假设为<old-A-hash>,重置到这个提交的前一个状态:
    git reset --hard <old-A-hash>^
  • 现在Cherry-pick修订后的Commit A.1(哈希值可以从原仓库的PR1里找到):
    git cherry-pick <A.1-hash>
  • 最后Cherry-pick你自己的Commit B:
    git cherry-pick <B-hash>
  • 因为修改了提交历史,需要强制推送到你的fork仓库:
    git push origin your-feature-branch-name --force

方法二:交互式变基(更高效的历史修改)

  • 同样先拉取原仓库最新代码:
    git fetch upstream
  • 切换到你的工作分支:
    git checkout your-feature-branch-name
  • 执行交互式变基,回到Commit A的前一个提交:
    git rebase -i <old-A-hash>^
  • 在弹出的文本编辑器中,找到Commit A对应的那一行,把开头的pick改成drop,保存并退出编辑器。这一步会移除旧的Commit A。
  • 接着Cherry-pick修订后的Commit A.1:
    git cherry-pick <A.1-hash>
  • 最后强制推送到你的fork:
    git push origin your-feature-branch-name --force

注意事项

  • 如果你是独自在这个分支上工作,强制推送完全没问题;但如果有其他协作者,一定要提前告知他们,让他们重新拉取并处理本地分支的冲突。
  • 推送完成后,你之前创建的新PR会自动更新为包含Commit A.1和B的版本。

内容的提问来源于stack exchange,提问作者Ijas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 18:22:41