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

如何在Gerrit中推送修改代码至原有提交,而非创建新提交?

Gerrit 推送修正代码到同一提交的方法

要在Gerrit中把后续修改合并到已推送的同一提交,核心是保留原提交的Change-Id并强制推送,步骤如下:

  • 修正代码后,将修改加入暂存区:

    git add .
    
  • 修正原提交(务必保留提交信息末尾的Change-Id):

    # 若不需要修改提交说明,直接用这个命令避免误删Change-Id
    git commit --amend --no-edit
    
    # 若需要修改提交说明,执行后编辑时不要删除最后一行的Change-Id
    git commit --amend
    

    Gerrit通过Change-Id识别同一变更,删除它会导致Gerrit创建新提交。

  • 强制推送到Gerrit,覆盖原变更内容:

    git push --force-with-lease ssh://username@gerrit.bk.com:29418/val/Test_Gerrit HEAD:refs/for/master
    

    优先使用--force-with-lease,它会检查远程是否有未同步的修改,避免误覆盖他人变更;如果确认无其他操作,也可以用--force替代。

为什么之前的操作会生成新提交?

你之前直接push时,git commit --amend已经生成了一个新哈希的提交,Gerrit默认拒绝覆盖已推送的变更,因此会自动生成新的Change-Id,最终创建新提交。加上强制推送参数后,Gerrit会用新提交替换原变更的内容,保持同一变更条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:07:17