「代码评审」Gerrit remote rejected no new changes error:failed to push some refs to 错误的解决办法

  因为公司代码评审使用的是gerrit,而今天提交代码到gerrit时报了如下的错误:

1
2
3
4
5
6
7
8
9
10
11
Enumerating objects: 17, done.
Counting objects: 100% (17/17), done.
Delta compression using up to 8 threads
Compressing objects: 100% (7/7), done.
Writing objects: 100% (9/9), 961 bytes | 480.00 KiB/s, done.
Total 9 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5)
remote: Processing changes: refs: 1, done
To ssh://gerrit.devlang.org:9999/app/android-framewark
! [remote rejected] HEAD -> refs/for/dev (no new changes)
error: failed to push some refs to 'ssh://klavor@gerrit.devlang.org:9999/app/android-framewark'

  试了很多次之后发现依旧报了同样的错误。
  后来登录到了gerrit上查看提交记录,发现commit已经成功push上去了。所以导致这个报错的原因是gerrit上已经包含了具有同样commitid的提交了,如果你确认这个具有相同commitid的提交不是同一笔(一般不会出现),可以通过git commit --amend打开commit mesage编辑状态,然后不需要修改任何东西,然后输入:wq保存退出,这个时候commitid就发生了变化了,这时再提交应该就没有问题了,如果还是报了同样的错误,肯定是这次提交已经存在了,从错误提示里的no new changes可以看出,更改后的内容和gerrit里的是一致的,不需要再次提交。
  如果还有疑问可以在下方评论区留言。