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

如何提交单个Commit用于评审,同时在本地保留多Commit历史?

解决方案:本地保留Gerrit Patch Set历史的两种方法

方法一:用本地分支追踪每个Patch Set

每次提交新Patch Set时,不直接amend原Commit,而是用本地分支单独记录每个版本,既满足Gerrit的Change-Id要求,又能在本地留存完整改动轨迹:

  1. 首次提交并推送到Gerrit:
    git add .
    git commit -m "fix: 修复XX问题"  # Gerrit钩子会自动生成Change-Id
    git push origin HEAD:refs/for/master
    
  2. 收到评审意见需修改时,先给当前版本创建分支存档:
    git branch patch-set-1 HEAD
    
  3. 回到工作分支做修改,amend时保留原Change-Id后推送:
    # 完成代码修改
    git add .
    git commit --amend  # 不要修改Commit信息里的Change-Id
    git push origin HEAD:refs/for/master
    
  4. 后续每一轮修改都重复步骤2-3,用不同分支名(如patch-set-2、patch-set-3)区分版本,本地可随时切换分支查看或对比:
    git checkout patch-set-1  # 查看第一版改动
    git diff patch-set-1 patch-set-2  # 对比两版差异
    

方法二:用git reflog找回历史版本

即使使用git commit --amend,本地被覆盖的Commit也会被reflog记录,可通过它回溯各阶段版本:

  1. 查看本地HEAD变动日志:
    git reflog
    
    输出会包含类似记录:
    abc1234 HEAD@{0}: commit (amend): fix: 修复XX问题(第二版)
    def5678 HEAD@{1}: commit: fix: 修复XX问题(第一版)
    
  2. 用哈希值创建分支或直接查看内容:
    git branch patch-set-1 def5678  # 把旧版本保存到分支
    git show def5678  # 查看第一版Commit内容
    git diff def5678 abc1234  # 对比两版差异
    
更优的Gerrit工作流推荐

结合Gerrit“一个问题对应一个Commit”的规则,推荐特性分支+临时分支存版本的工作流:

  1. 从master拉取最新代码,创建专属特性分支:
    git checkout master
    git pull
    git branch feature/fix-xx-problem
    git checkout feature/fix-xx-problem
    
  2. 首次提交并推送到Gerrit评审:
    git add .
    git commit -m "fix: 修复XX问题"
    git push origin HEAD:refs/for/master
    
  3. 收到评审意见后,用临时分支存档当前版本:
    git branch ps/fix-xx-problem-1 HEAD
    
  4. 在特性分支上修改代码,amend保留Change-Id后推送新Patch Set:
    # 完成代码修改
    git add .
    git commit --amend
    git push origin HEAD:refs/for/master
    
  5. 评审通过后,将特性分支合并到master(或直接cherry-pick,契合Gerrit最终squash到master的规则):
    git checkout master
    git pull
    git merge feature/fix-xx-problem
    git push origin master
    
    之后可按需删除特性分支,或保留临时分支作为历史记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:40:53