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

如何重新打开已提交至Gerrit的WIP Commit以继续开发?

解决WIP提交后重新开发的Git操作方案

核心需求回顾

保留已推送到Gerrit的WIP提交,同时让工作区回到该提交前的状态(文件未暂存),HEAD仍指向WIP提交,以便后续通过amend更新原提交。

正确操作步骤

  1. 回到WIP提交的HEAD指向
    如果之前执行git reset --soft HEAD~1导致HEAD回退,先通过git reflog找到WIP提交的哈希值(例如abc123),然后切回该提交:

    git checkout abc123
    
  2. 恢复工作区到提交前状态
    执行以下命令,将工作区所有文件恢复为WIP提交前的状态,且所有变更处于未暂存状态:

    git restore . --source HEAD~1
    

    该操作仅覆盖工作区文件,不会移动HEAD,也不会将变更加入暂存区,完全匹配需求。

  3. 继续开发并更新WIP提交
    修改代码后,将需要提交的变更加入暂存区:

    git add <目标文件路径>
    

    执行amend更新原WIP提交:

    git commit --amend
    

    最后推送到Gerrit覆盖原提交(Gerrit支持修改已推送的WIP提交,需添加--force):

    git push origin HEAD:refs/for/你的分支名 --force
    

为什么之前的方法不适用

  • 使用git reset --soft HEAD~1会让HEAD回退到WIP提交的父提交,后续git commit --amend会错误修改父提交而非原WIP提交。
  • 重新提交新的WIP会生成全新的提交哈希,本地丢失原WIP提交的指向,无法直接通过amend关联Gerrit上的原提交。

内容的提问来源于stack exchange,提问作者Viktor Plaček

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:01:23