Prune empty merge commits from history in Git repository

Issue

I have cleaned up our Git repository quite a bit, we need to remove big parts from the history. I do this using:

git filter-branch --prune-empty --tree-filter 'rm -rf some_stuff'

The --prune-empty flag will remove commits that are left empty after the process, except commits with multiple parents (merge commits). Even if the branch being merged in contains absolutely nothing, and the merge adds nothing to the tree.

How do I also prune these empty merge commits from the history?

Solution

I found a very cute little wrapper script around filter-branch here:

https://github.com/pflanze/chj-bin/blob/master/cj-git-filter-branch

Preconds and background here:

http://lists.q42.co.uk/pipermail/git-announce/2011-September/000486.html

Answered By – ralphtheninja

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published