1

我试图将新补丁集推送到 Gerrit 中正在审查的现有更改:

git push origin HEAD:refs/for/foo

但它失败并显示更改已关闭。然后,我愚蠢地尝试:

git push . HEAD:refs/for/foo

这似乎是成功的,但是当我检查 Gerrit 时,没有新的补丁集。我认为部分原因是我的提交评论不包含我想要推送到的 Gerrit 更改 ID。但是最后一个命令实际上做了什么?我该如何撤消它?

4

2 回答 2

3

.” 参数的意思是“推送到这个存储库”,而 refspec 的HEAD:refs/for/foo意思是“获取 HEAD 指向的当前提交,并创建一个新的 ref(类似于一个分支,尽管它们通常存储为refs/heads/something),命名为refs/for/foo指向相同的提交”。

本质上,它是在当前提交时创建一个新的“分支”,但由于所需的名称不在正常的分支名称空间中,我们不能只使用git branch refs/for/foo.

您应该能够撤消它git push . :refs/for/foo- 命名一个空源以替换 ref。

于 2012-10-16T17:27:20.663 回答
0

git push不仅接受远程名称,还接受地址(请参阅文档中的Git URL)。特别是它接受到本地存储库的路径,因此.只是当前存储库并且您在其中创建了一个新的 ref。

您可以像往常一样删除它:

git push . :refs/for/foo
于 2012-10-16T17:28:24.623 回答