git push origin HEAD:refs/for/master解析

首先来看看git push origin HEAD:refs/for/master的格式解析:

  1. 总体格式:git push <remote 名字> <本地分支的名字> : <远程库的名字>
  2. git push :表示推送代码到远程服务器。
  3. origin : 表示远程的库的名字。
  4. master:表示远程分支的名字。
  5. HEAD: 表示一个特别的指针,指向你正在工作的本地分支的指针,可以当做是本地分支的别名。git通过它可以知道当前工作区间在哪个分支。
  6. refs/for :表示我们提交代码到服务器之后是需要经过code review 之后才能进行merge操作的,而refs/heads是不需要的。

错误:
![remote rejected] HEAD -> refs/for/master
error: failed to push some refs to ‘ssh://xxxxxxx’

原因:复用了上一次的提交的ID

解决方法1:

  1. 需要在gerrit上对上一次错误提交进行Abandon操作;
  2. 回退到上一次的commit版本,重新进行commit,然后进行git push提交。

解决方法2:

  1. 如果是使用Android Studio等开发工具提交的,不需要在gerrit上对上一次错误提交进行Abandon操作;
  2. 在Android Studio等开发工具提交可以选择Amend Commit提交,Amend Commit提交携带了Changes id会自动覆盖上一次的提交;
  3. 成功后,再进行然后进行git push提交。

解决方法3:

  1. 加上 -f,强制推送。此时远程库会与本地同步。
  2. 不推荐使用该方法

$ git push -f

解决方法4:

  1. 使用git pull –rebase origin master合并远程和本地的库,本地会多出之前不同步的文件;
  2. 再使用 git push -u origin master 推送到远程库中。

$ git pull –rebase origin master
$ git push origin master

发表回复

后才能评论