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

Gerrit中如何同步amend后的提交到已cherry pick它的分支

最优同步操作步骤

这个场景核心要避免生成重复提交、冲掉同事后续的自有改动,全程在同事本地分支操作即可,不需要你这边做额外特殊处理,你只需要把amend后生成的新提交A'的hash、以及你提交所在的分支名同步给同事就行。

同事侧操作流程:

  • 操作前先检查本地工作区,如果有未提交的临时改动,先执行git stash暂存,避免中途被冲突打断丢代码。
  • 先定位自己之前cherry-pick生成的提交B的hash值,执行交互式变基删除旧的B提交:
    执行命令git rebase -i B^,在弹出的提交列表编辑页里,找到B对应的那一行,把行首的pick改成drop,保存退出等待变基完成即可。
  • 拉取你所在分支的最新代码到本地:git fetch origin 你提交A所在的远程分支名
  • 把你更新后的新提交拣选到当前分支:git cherry-pick A'的完整hash值
  • 如果出现代码冲突,正常手动解决冲突后,执行git add 冲突文件路径,再执行git cherry-pick --continue就完成了新提交的同步。
  • 如果最开始暂存了本地临时改动,执行git stash pop恢复即可。

特殊简化场景

如果同事在生成提交B之后,没有在B之上提交任何自己的新代码,可以跳过rebase步骤,直接执行:
git reset --hard B^
后续直接按上面的步骤cherry-pick新的A'即可,操作更快。

注意避坑

  • 不要直接跨分支merge:会把amend前的A、amend后的A'、同事生成的B三个重复改动的提交都留在提交历史里,平白增加后续合并主分支的冲突概率,历史记录也会非常乱。
  • 不要直接硬重置到你的提交:会直接抹掉同事在B之后写的所有自有代码,风险极高。
  • 如果同事之前已经把带B提交的分支推到了自己的远程分支,同步完新提交后需要执行git push --force-with-lease推送更新,不要用裸--force参数,避免误覆盖其他协作者同时推到该分支的改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:15:42