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

基于Gerrit作为中央仓库的Git优化工作流建议咨询

Gerrit本地工作流优化方案

核心思路

直接在dev-branch完成所有操作,保留本地开发历史的同时无需维护额外cl分支,通过Git标记和交互式变基实现开发过程与评审提交的分离,配合工具简化推送流程。


优化后步骤

  • 日常开发:在dev-branch自由提交,保留所有逻辑节点(包括标注WIP/tmp的本地提交),无需创建子分支,直接用git commit记录每一步开发内容。
  • 同步上游:准备提交Gerrit前,拉取最新master并变基:
    git fetch origin master && git rebase origin/master
    
  • 备份本地历史:创建Git标记保存当前dev-branch的完整开发状态,避免整理提交时丢失历史:
    git tag dev-backup-$(date +%Y%m%d%H%M)
    
  • 整理评审提交:执行交互式变基,将需要提交的逻辑合并为单个整洁提交(编写正式评审用的提交信息),本地历史已通过标记备份,无需担心丢失:
    git rebase -i origin/master
    
    在编辑器中,将冗余的WIP/tmp提交标记为squash或fixup,合并到目标提交后保存退出。
  • 推送WIP到Gerrit:直接从dev-branch推送,标记为WIP避免自动进入评审:
    git push origin HEAD:refs/for/main%wip
    
  • 处理评审反馈:直接在dev-branch修改代码,用--amend更新当前提交,再推送新patchset:
    git commit --amend -a
    git push origin HEAD:refs/for/main%wip  # 维持WIP状态
    # 转为正式评审时去掉%wip
    git push origin HEAD:refs/for/main
    
  • 评审期间继续开发:无需切换分支,直接在dev-branch新增WIP/tmp提交记录后续开发,这些提交不会影响已推送的Gerrit patchset。
  • 更新patchset并整合新开发:当需要将后续开发内容加入评审时,再次执行交互式变基,将新的WIP提交合并到评审主提交:
    git rebase -i origin/master
    
    标记对应提交为squash后,更新提交信息并推送:
    git commit --amend
    git push origin HEAD:refs/for/main
    
  • 恢复完整本地历史:若需找回所有开发记录,直接切换到之前创建的标记,或合并回dev-branch:
    # 临时查看历史状态
    git checkout dev-backup-YYYYMMDDHHMM
    # 合并历史回dev-branch
    git checkout dev-branch
    git merge dev-backup-YYYYMMDDHHMM
    
  • CL合并后的清理:同步上游master,继续在dev-branch开发,可按需清理旧标记:
    git fetch origin master && git rebase origin/master
    git tag -d dev-backup-YYYYMMDDHHMM  # 可选操作
    

工具简化建议

使用git-review工具替代手动推送命令,自动处理Gerrit的refs/for路径,简化patchset更新流程:

  • 安装后,推送WIP:git review -w
  • 更新patchset:git review
  • 工具会自动检测当前分支与上游的同步状态,减少手动输入错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:44:52