From: Avery Pennarun Date: Thu, 18 Feb 2010 18:38:49 GMT Subject: Re: RFD: best way to automatically rewrite a git DAG as a linear history? Message-ID: <32541b131002181038x26093e3em250b46b5a6e9d97c@mail.gmail.com> In-Reply-To: <20100218051129.GD10970@coredump.intra.peff.net> On Thu, Feb 18, 2010 at 12:11 AM, Jeff King wrote: > One simple strategy would be to squash all side-branch development into > a single commit. Something like this (replace MY_START_BRANCH with your starting branch, and do this in a clone of your repository so you don't destroy anything by accident): parent="" git rev-list --first-parent --reverse | while read commit; do if [ -z "$parent" ]; then git checkout -f $commit git clean -fdx else git diff $parent $commit | git apply --index git commit -C $commit fi parent=$commit done Have fun, Avery