如何在Gerrit中推送修改代码至原有提交,而非创建新提交?
Gerrit 推送修正代码到同一提交的方法
要在Gerrit中把后续修改合并到已推送的同一提交,核心是保留原提交的Change-Id并强制推送,步骤如下:
修正代码后,将修改加入暂存区:
git add .修正原提交(务必保留提交信息末尾的
Change-Id):# 若不需要修改提交说明,直接用这个命令避免误删Change-Id git commit --amend --no-edit # 若需要修改提交说明,执行后编辑时不要删除最后一行的Change-Id git commit --amendGerrit通过
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
相关产品推荐
相关产品推荐

