How to squash all git commits into one?

git, git-rebase, git-rewrite-history, rebase, squash

Solution

Perhaps the easiest way is to just create a new repository with current state of the working copy. If you want to keep all the commit messages you could first do `git log > original.log` and then edit that for your initial commit message in the new repository:

rm -rf .git
git init
git add .
git commit

or

git log > original.log
# edit original.log as desired
rm -rf .git
git init
git add .
git commit -F original.log

Problem

How do you squash your entire repository down to the first commit? I can rebase to the first commit, but that would leave me with 2 commits. Is there a way to reference the commit before the first one?

Original source

Related problems