我试图将一个新的补丁集推送到 Gerrit 中正在审查的现有更改:
git push origin HEAD:refs/for/foo
但它失败了,并显示更改已关闭的错误。然后,我愚蠢地尝试:
git push . HEAD:refs/for/foo
这似乎很成功,但是当我检查 Gerrit 时,没有新的补丁集。我认为部分原因是我的提交评论不包含我想推送到的 Gerrit 更改 ID。但是最后一个命令实际上做了什么?我该如何撤消它?
.
"参数表示"推送到此存储库",refspec HEAD:refs/for/foo
表示"获取 HEAD 指向的当前提交,并制作一个名为 refs/for/foo
的新 ref(类似于分支,尽管它们通常存储为 refs/heads/something
),指向相同的提交"。
本质上,它是在当前提交时创建一个新的"分支",但由于所需的名称不在正常的分支命名空间中,因此我们不能只使用 git branch refs/for/foo
。
您应该能够使用 git push . :refs/for/foo
撤消它 - 命名一个空源以替换 ref。
git push
不仅接受远程名称,还接受地址(请参阅文档中的 Git URL)。 特别是它接受本地存储库的路径,因此.
只是当前存储库,并且您在其中创建了一个新的 ref。
您可以像往常一样删除它:
git push . :refs/for/foo