問題: 本地使用 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用於合並。
————————————————
原文鏈接:https://blog.csdn.net/u013848401/java/article/details/86311491