git commitのログを操作して履歴から消し去りたい

コミットした後に変数名が間違って(typoして)いたとかで、そのままコミットしてログを残すものちょっとかっこ悪いと言うときに、コミットをひとまとめにして無かった事にしたい場合があります。。。
そんな時はgit rebase -iコマンドでコミットをまとめます。

$ git log
commit 0670c5ad84339ba6fcb2a922530e610ec056e9fb
Author: user <user@example.com>
Date:   Thu Sep 25 00:01:00 2014 +0900
3つめのコミット
commit 443e64b0e3631148219029f418bef2e92a1a4c4c
Author: user <user@example.com>
Date: Wed Sep 24 23:52:07 2014 +0900
2つめのコミット ←これを無かった事にしたい
commit d4ae77426d3045a06d98056d1ccade4aa9e999ed
Author: user <user@example.com>
Date: Wed Sep 24 23:51:31 2014 +0900
1つめのコミット

HEADのあとに^を付けた数だけ編集対象にできます。

$ git rebase -i HEAD^^^
pick d4ae774 1つめのコミット
pick 443e64b 2つめのコミット
pick 0670c5a 3つめのコミット
# Rebase 02e5822..0670c5a onto 02e5822
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

表示された2つ目の

pick 443e64b 2つめのコミット

“pick”を”fixup”に変更してエディタを抜けます。

Successfully rebased and updated refs/heads/master.

と表示されれば成功です。
念のためgit logを確認しておきます。

$ git log
commit 16b1c9a9b311cc4ab4039c3e7a9bc1cda8269c2b
Author: user <user@example.com>
Date:   Thu Sep 25 00:01:00 2014 +0900
    3つめのコミット
commit 9cf02d4915065c90460607ad56a0b7e5e1348568
Author: user <user@example.com>
Date:   Wed Sep 24 23:51:31 2014 +0900
    1つめのコミット

2つめのコミットがなくなっているのが確認できます。
fixupの他にも、reword, edit, squashなどが選択でき、その時々の状況で使い分けると見通しのよいコミットログになるかと思います。