Recently I've had reason to start several new projects with Git. That's nothing exciting (except for me), but it means I've been making a lot of first-commits, and often rebasing my early commit history before making it public. That, however, runs into an interesting problem: You can't easily rebase the first commit.
Sometimes that doesn't matter. Lately, though, I've repeatedly found myself wanting to change that first commit, often to remove a file that I included in the initial commit inadvertently.
Fortunately, Git offers a couple of ways around this situation. My personal favorite is to simply start the history with a null commit. Git normally won't let you make a commit if there's nothing to do, but you can easily disable that check. My new Git projects now tend to start like so:
git commit --allow-empty -m "Initial commit"
Boom, done. Now my repository has a single commit in it, the contents of which... are empty. But that doesn't matter. I can now add/remove/whatever anything I need to, and my entire useful history will still be tweakable with a simple
git rebase -i.
A helpful tip for your next project.