no new changes
==============

With this error message Gerrit rejects to push a commit if the pushed
commit was already successfully pushed to Gerrit. In this case there
is no new change and consequently there is nothing for Gerrit to do.

If your push is failing with this error message, you normally
don't have to do anything since the commit was already successfully
pushed. Still this error message may sometimes come as a surprise if
you expected a new commit to be pushed. In this case you should
verify that:

. your changes were successfully committed locally (otherwise there
  is no new commit which can be pushed)
. you are pushing the correct commit (e.g. if you are pushing HEAD
  make sure you have locally checked out the correct branch)

If you are sure you are pushing the correct commit and you are still
getting the "no new changes" error unexpectedly you can take the
commit ID and search for the corresponding change in Gerrit. To do
this simply paste the commit ID in the Gerrit WebUI into the search
field. Details about how to search in Gerrit are explained link:user-search.html[here].

Please note that each commit can really be pushed only once. This
means:

. you cannot push a commit again even if the change for which the
  commit was pushed before was abandoned (but you may restore the
  abandoned change)
. you cannot reset a change to an old patch set by pushing the old
  commit for this change again
. if a commit was pushed to one branch you cannot push this commit
  to another branch
. if a commit was pushed directly to a branch (without going through
  code review) you cannot push this commit once again for code
  review (please note that in this case searching by the commit ID
  in the Gerrit WebUI will not find any change)

If you need to re-push a commit you may rewrite this commit by
link:http://www.kernel.org/pub/software/scm/git/docs/git-commit.html[amending] it or doing an interactive link:http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html[git rebase]. By rewriting the
commit you actually create a new commit (with a new commit ID) which
can then be pushed to Gerrit. If the old commit contains a Change-Id
in the commit message you also need to replace it with a new
Change-Id (case 1. and 3. above), otherwise the push will fail with
another error message.


GERRIT
------
Part of link:error-messages.html[Gerrit Error Messages]
