|= non-fast forward
|With this error message Gerrit rejects a push if the remote branch can't
|be fast forwarded onto the pushed commit. This is the case if the
|pushed commit is not based on the current tip of the remote branch.
|If a non-fast forward update would be done, all commits from the
|remote branch that succeed the base commit of the pushed commit would
|be removed. This would be especially confusing for other users that
|have based their work on such a commit. Because of this Git by
|default does not allow non-fast forward updates.
|When working with Gerrit, this error can only occur if
|link:user-upload.html#bypass_review[code review is bypassed].
|There are different reasons why this error can occur:
|. the remote branch has evolved since you started your development
|. you are pushing the commit to the wrong project
|== the remote branch has evolved since you started your development
|You start your development based on the current tip of the remote
|branch. While you implement your feature / bug-fix, a change in Gerrit
|gets submitted (or another user directly pushes a commit) so that the
|remote branch evolves. If you are now pushing your commit, with
|bypassing code review, your push will be rejected with the error
|message 'non-fast forward'. To solve the problem you have to either
|. link:http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html[rebase,role=external,window=_blank] your commit on the new tip of the remote branch or
|. link:http://www.kernel.org/pub/software/scm/git/docs/git-merge.html[merge,role=external,window=_blank] your commit with the new tip of the remote branch.
|Afterwards the push should be successful.
|== you are pushing the commit to the wrong project
|If you do a commit in one project and then accidentally push this
|commit, with bypassing code review, to another project, this will fail
|with the error message 'non-fast forward'. To fix the problem you
|should check the push specification and verify that you are pushing
|the commit to the correct project.
|Although it is considered bad practice, it is possible to allow
|non-fast forward updates with Git. For this the remote Git repository
|has to be configured to not deny non-fast forward updates (set the
|link:http://www.kernel.org/pub/software/scm/git/docs/git-config.html[Git configuration,role=external,window=_blank] parameter 'receive.denyNonFastForwards' to
|'false'). Then it is possible to push a non-fast forward update by
|using the '--force' option.
|Part of link:error-messages.html[Gerrit Error Messages]