上传代码时 git push远程时被拒绝!

    技术2022-07-13  60

    问题: 本地使用 git merge 把dev分支合并到master分支之后,push master分支到Gerrit时,提示:

                    Total 0 (delta 0), reused 0 (delta 0)                  remote: Processing changes: refs: 1, done                 To ssh://xxx.xxx.xxx.xxx:xxxxx/{project_name}                ! [remote rejected] HEAD -> refs/for/master (no new changes)                  error: failed to push some refs to 'ssh://xxxxxx@xxx.xxx.xxx.xxx:xxxxx/{project_name}' 分析:           no new changes 表示本地分支和远程分支代码没有差别,也就是没有新的提交。Gerrit审核根据commit id 和 changeId来判断是不是新的提交,dev分支merge到master分支后,在master上可能没有生成新的commit id和changeId。也就是两个分支的commit id和changeId都相同,在master分支推送到Gerrit的时候,Gerrit判断内容相同,因此拒绝push。 解决:           方法一:通过git commit --amend生成新的changeId,然后再push;           方法二:在merge的时候加上--no-ff参数。

    --no-ff:不使用fast-forward方式合并,合并的时候会创建一个新的commit用于合并。 ————————————————

     问题:Remote reject HEAD -> refs/for/master (change htto://gerrit.iot.cn/54 closed)

    分析:

    Git提交代码,gerrit构建不通过,或者review不通过,直接abandon掉,客户端在进行提交时,直接复用上一次的changeid,再次提交就会出现这个问题。

    解决措施:在gerrit中恢复上次提交记录,然后git再次提交就可以了  

    Processed: 0.035, SQL: 9