有什么区别:
git push origin HEAD:refs/for/master
和
git push origin refs/for/master
第二个命令不应该也将更改推送到远程仓库origin
并移动 HEAD 吗?
'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' 分支,什么也做不了。