从Gerrit中撤销已推送变更集中的文件

3

我有一个提交,其中包含两个更改的文件(文件a和b),我将其推送到gerrit仓库(但尚未合并)。现在我意识到我不需要更新b。我该如何推送一个新的变更集,以删除/取消提交b,只包括文件a?

3个回答

3
在您的本地代码库中,请执行以下操作:
  1. Remove file-b from the commit

    git reset HEAD^ -- file-b
    
  2. Amend the commit without the file-b

    git commit --amend
    
  3. Discard file-b changes

    git checkout -- file-b
    
  4. Confirm that everything is OK

    git status
    git log
    git diff HEAD^ HEAD
    
  5. Push the new commit to Gerrit (new patchset)

    git push origin HEAD:refs/for/master
    

不错!在第一步中,应该删除两个连字符吗?(就在“file-b”之前) - Ron
不,这两个连字符是真的必需的。 - Marcelo Ávila de Oliveira

1
在 Gerrit GUI Web 控制台中还有一个编辑按钮,您可以使用它。

1
请在您的回答中添加更多细节,例如工作代码或文档引用,以扩展说明。 - Community
这并没有回答问题。一旦你拥有足够的声望,你就可以评论任何帖子;相反,提供不需要提问者澄清的答案 - Andy J

0

由于我不能评论,我不得不警告其他用户,遵循Marcelo Ávila de Oliveira的解决方案在2022年11月14日已经不起作用了。新建了一个提交而不是保留提交SHA,这反过来会触发我的gerrit commit-msg hook发出一个新的Change-Id,从而破坏当前的修补程序工作副本。


你是指第二步 (git commit --amend) 吗?是的,它会生成一个新的提交(每次更改现有提交时,实际上都会创建一个新的提交),但这不会更改提交的 Change-Id。 - Marcelo Ávila de Oliveira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接