Hi I've always been a frequent user of git rebase -i to clean up private branches before publication. I like committing without thinking while coding and then grouping the commits sensibly afterwards. But git rebase -i didn't scale for me for this purpose, cleaning up several days (or even weeks) of work would become a pain because frequently I'd make some error, like when dealing with conflicts, and then multiple rebase -i runs are needed, requiring to partially redo the work. So I've written a set of tools[1] that separates the acts of editing and applying history changes. It does this by turning the history in question into a set of git patch files and a file containing the list of the patches (and optionally new commit messages), and allows to edit both the list and the patch files themselves incrementally until they can be applied cleanly again in the new order. In other words, an (attempted) application (cj-git-patchtool's "app" command) will not remove these files, and if there's a problem the existing files can be further refined. There's also a command "wig" that uses "wiggle" (by Neil Brown) to try to apply a patch automatically when git or patch wouldn't accept it, and if successful, stores the result back into the patch file so that it will be reused on subsequent "app" runs. For convenience, these files, which are put inside a newly created directory, are automatically checked into their own git repository, too, so when doing something really complicated, the state of work can be committed and reverted easily when reaching a dead end. For more information see the README on Github.[1] This works well for me, I'm now always using it whenever I need to do more than a couple trivial changes to a Git history. I don't know whether there are other tools offering the same now. Also, I have written this "just for myself", and for this reason made use of a set of never-before released Perl libraries of mine. If there's general interest in this tool, I'll be glad to help get rid of the dependency on these libraries (or clean them up and publish them properly, too). I welcome your comments. Christian. [1] https://github.com/pflanze/cj-git-patchtool -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html