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

如何在Gerrit仓库的master和release分支仅保留初始与最新提交?

Gerrit分支保留指定提交的操作方案

场景一:同时保留初始提交和最新提交

如果需要保留仓库创建时的初始提交,以及当前最新提交,可按以下步骤操作(以master分支为例,release分支操作完全一致):

  • 克隆仓库到本地:
    git clone <你的Gerrit仓库地址>
    
  • 切换到目标分支:
    git checkout master
    
  • 获取初始提交的哈希值(仓库最早的那个提交):
    git rev-list --max-parents=0 HEAD
    
    把输出的哈希值记为<initial-commit-hash>
  • 获取最新提交的哈希值:
    git rev-parse HEAD
    
    记为<latest-commit-hash>
  • 创建基于初始提交的临时分支:
    git checkout -b temp <initial-commit-hash>
    
  • 将最新提交的内容复制到临时分支:
    git cherry-pick <latest-commit-hash>
    
    如果出现冲突,手动解决后执行git cherry-pick --continue完成操作
  • 切回原分支并重置到临时分支状态:
    git checkout master
    git reset --hard temp
    
  • 删除临时分支:
    git branch -D temp
    
  • 强制推送到Gerrit仓库(需确保你有Gerrit的强制推送权限,若无则联系管理员开启):
    git push origin master --force
    

场景二:仅保留最新提交(优先选择)

如果初始提交不重要,只需要保留最新提交的内容,操作更简单:

  • 克隆仓库到本地:
    git clone <你的Gerrit仓库地址>
    
  • 切换到目标分支:
    git checkout master
    
  • 创建一个无历史的孤儿分支:
    git checkout --orphan new-branch
    
  • 添加所有当前文件到暂存区:
    git add -A
    
  • 提交当前状态作为新的根提交:
    git commit -m "保留最新提交内容"
    
  • 切回原分支并重置到新分支状态:
    git checkout master
    git reset --hard new-branch
    
  • 删除临时分支:
    git branch -D new-branch
    
  • 强制推送到Gerrit仓库:
    git push origin master --force
    

注意事项

  • Gerrit默认禁用强制推送,需要在项目的「Access」设置中,给对应用户组开启「Force Push」权限,否则推送会失败
  • 操作完成后,其他协作开发者需要同步本地分支:
    git fetch origin
    git reset --hard origin/master  # 对应分支替换成release即可
    
  • release分支的操作步骤和master完全一致,只需把命令中的分支名替换为release

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:38:19