2

有什么区别:

git push origin HEAD:refs/for/master

git push origin refs/for/master

第二个命令不应该也将更改推送到远程仓库origin并移动 HEAD 吗?

4

1 回答 1

4

'refspec' 选项在 'repository' 名称之后。

根据 --help page refspec 的形式为

<source ref>:<destination ref>

refs 通常是分支的名称,这意味着您使用 'source ref' 来更新 'destination ref'。
所以

git push origin HEAD:refs/for/master

表示使用 HEAD(current branch) 更新远程主控

你也可以省略 'destination ref' 部分。如果这样做,git 会尝试查找名称与“source ref”完全相同的远程分支。
所以

git push origin refs/for/master

意味着使用本地 'refs/for/master' 分支来更新远程 'refs/for/master' 分支。

但是 /for/ 由 gerrit 使用,而不是您的本地存储库。所以 git 找不到本地的 'refs/for/master' 分支,什么也做不了。

于 2013-07-11T09:51:41.647 回答