git push origin HEAD:refs/for/master解析
首先来看看git push origin HEAD:refs/for/master的格式解析:
- 总体格式:git push <remote 名字> <本地分支的名字> : <远程库的名字>
- git push :表示推送代码到远程服务器。
- origin : 表示远程的库的名字。
- master:表示远程分支的名字。
- HEAD: 表示一个特别的指针,指向你正在工作的本地分支的指针,可以当做是本地分支的别名。git通过它可以知道当前工作区间在哪个分支。
- refs/for :表示我们提交代码到服务器之后是需要经过code review 之后才能进行merge操作的,而refs/heads是不需要的。
错误:
![remote rejected] HEAD -> refs/for/master
error: failed to push some refs to ‘ssh://xxxxxxx’
原因:复用了上一次的提交的ID
解决方法1:
- 需要在gerrit上对上一次错误提交进行Abandon操作;
- 回退到上一次的commit版本,重新进行commit,然后进行git push提交。
解决方法2:
- 如果是使用Android Studio等开发工具提交的,不需要在gerrit上对上一次错误提交进行Abandon操作;
- 在Android Studio等开发工具提交可以选择Amend Commit提交,Amend Commit提交携带了Changes id会自动覆盖上一次的提交;
- 成功后,再进行然后进行git push提交。
解决方法3:
- 加上 -f,强制推送。此时远程库会与本地同步。
- 不推荐使用该方法
$ git push -f
解决方法4:
- 使用git pull –rebase origin master合并远程和本地的库,本地会多出之前不同步的文件;
- 再使用 git push -u origin master 推送到远程库中。
$ git pull –rebase origin master
$ git push origin master
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。