什么是“git push.HEAD:refs / for / foo”吗?

时间:2012-10-16 15:53:48

标签: git gerrit

我试图将一个新的补丁集推送到Gerrit审核的现有变更中:

git push origin HEAD:refs/for/foo

但是由于错误导致更改已经关闭而失败。然后,我愚蠢地尝试了:

git push . HEAD:refs/for/foo

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

2 个答案:

答案 0 :(得分:3)

.”参数表示“推送到此存储库”,refspec HEAD:refs/for/foo表示“接受HEAD指向的当前提交,并创建一个新的ref(类似于分支) ,虽然它们通常存储为refs/heads/something)名为refs/for/foo,指向同一个提交“。

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

您应该可以使用git push . :refs/for/foo撤消它 - 命名一个空来源以替换参考号。

答案 1 :(得分:0)

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

您可以照常删除它:

git push . :refs/for/foo