How do I remove outgoing changesets in Mercurial (hg)

Solution 1:

Use hg strip 'roots(outgoing())'

Solution 2:

Either reclone from the central repo, or use clone -r to reclone only the needed changesets.

Solution 3:

The other option is to use hg strip command, which is part of the mq (mercurial queues) extension.

The mercurial philosophy is of an immutable history, so commands which manipulate that history are frowned upon, but there are times when stripping or rebasing may solve more problems than they cause.

If you use TortoiseHg then you will need to enable the MQ extension. Prior to v1.0 THG it was enabled by default, but after much discussion it was decided that it was really an 'advanced' feature that should be left off until the use has the experience to know how to enable it.