Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Easily perform safe (merge-based) rebases.

Project Description

Easily perform merge-based rebases, i.e. rebases that don’t alter history.

You can read the full rationale behind this idea here:


As a summary:

  • git checkout topic && git merge master is the wrong way to merge. Get ready for bad things to happen.
  • git checkout topic && git rebase master is better but:
    • it alters history. It is safe from merge conflicts but doesn’t guarantee that merged code works. You are losing some intermediate states of your work.
    • it is incompatible with branches you already pushed to shared repository.


  • mimics the “rebase” workflow, but only using merges, no history alteration. It replays “topic” changes on top of “master” in “topic” branch (just like rebase), without deleting “topic” changes.
  • preserves all states of your code.
  • is compatible with pushed branches.
  • the main (and only?) counterpart is that there are more entries in history. There are more commits and more merges. Is that a drawback? If you look carefully, things are clear and clean. But some developers don’t like it…


Currently developped against Python 2.7.x. Supports only Git for now.

sudo pip install

Uninstall with sudo pip uninstall psykorebase.



Current, in-development prototype

psykorebase MASTER [TOPIC] performs a “psycho-rebase” of TOPIC branch on top of MASTER. Where TOPIC is optional and defaults to current branch.


git checkout master && git pull --rebase origin master  # Update master.
git checkout topic && psykorebase master  # Psykorebase topic on top of master.

Planned usage (in development)

The default, issues one merge for each (new) commit in topic branch:

git checkout topic && psykorebase master.

The quick’n’dirty, issues one big merge which includes all (new) commits from topic branch (merges heads):

git checkout topic && psykorebase --fast master

The default is safer, the --fast works well when there are poor chances of problems. CHANGELOG =========

1.0.1 (2015-07-29)

  • Fix

1.0.0 (2015-07-29)

  • Add Python3 support.
  • Add Git support
  • Add psykorebase BRANCH and psykorebase --continue functionality.

Release History

This version
History Node


History Node


Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, Size & Hash SHA256 Hash Help File Type Python Version Upload Date
(13.1 kB) Copy SHA256 Hash SHA256
Source None Jul 29, 2015

Supported By

Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Google Google Cloud Servers