We (git/gerrit newbs) are trying to use gerrit with feature branches. The workflow we are trying to implement is as follows:

1. User creates a feature branch, pushes it to the remote repo directly (no review) with `git push -u origin users-branch`.
2. As changes pile up in the master branch, user does `git pull --rebase origin master` (`--rebase` is needed because otherwise git creates a merge commit, and merge commits cannot be pushed through gerrit).
3. User continues to push his changes to the remote repo with `git push --force origin users-branch` (`--force` is needed because of `--rebase` at the previous stage; I'm looking for a better way to do this).
4. Other users can contribute to the feature branch by pushing their own changes.
5. When the feature is ready, the user pushes it for review with `git push origin HEAD:refs/for/master`.

The last step doesn't work because commits that were pushed to gerrit at any stage cannot be pushed again.

The gerrit manual suggests to amend the commits you want to push again. This seems complicated and error prone.

It all works if user never pushes his changes to remote repo, because gerrit doesn't see the changes until they are pushed for review. But this is exactly what we don't like. 

It seems possible to use a different repo for feature branches, such that gerrit never sees duplicate change IDs, but this again seems like a needless complication.

Is there a way to do what we want safely and elegantly?