上傳代碼時 git push遠程時被拒絕!

問題: 本地使用 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://[email protected]: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再次提交就可以了
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章