あの頃に戻りたい(Gitの履歴編集についてあれこれ)

あの頃に戻ってやりなおしたいと思えるほどのバイタリティーが無い松井です。
今回はGitで履歴を遡ったり編集したりする方法についてです。

※Gitの扱いにはあまり自信がないので、
もし認識の間違い等ありましたらご指摘頂けると助かります。

前のコミットまで戻ってやりなおしたい
(堂々とやり直すとき用)

$ git revert

前のコミット時点まで戻ったあと、新規でコミットする方法。
作業履歴が残るので共同作業でも安心。

前のコミットまで戻ってやりなおしたい
(誰にも知られずこっそりやり直したいとき用)

$ git reset

コミットした履歴ごと消してやりなおしたいときに発動。
既にpushしてしまった+しかも既に誰かがpullしてる という状況に発動させると、同期が大変なことになるので発動できない。

soft,mixed,hardとモードが3つある。
・soft  :変更したインデックスの状態を元に戻す
(以前のコミットを再びリポジトリに加えたり、取り除いたりできる)
・mixed :コミットだけをなかったことにする
・hard  :最近のコミットを完全になかったことにする
(やり直しができないので注意が必要)

リポジトリの履歴を書き換える

$ git rebase -i

・履歴の順番を変更したい
・複数のコミットを1つにまとめたい
・1つのコミットを複数に分割したい
これらの場面で使えます。
TortoiseGitでどうすればよいかはわからないのですが、
エディタで変更する場合は

pick ××××××× コミットメッセージ1
pick ××××××× コミットメッセージ2

の部分を・・・
順番を変更したい場合は、それぞれの行を入れ替えて保存
コミットをまとめたい場合は、2行目のpickの文字をsquashに変更して保存
分割したい場合は、1行目のpickの文字をeditに変更して保存
という風にしてやると良いみたいです。

リポジトリの履歴を圧縮する

$ git gc

これでリポジトリのサイズが減少できるそうです。
Git内部の履歴が変わることはなく、履歴の格納方法が変わるだけらしいです。
頻度としては1ヶ月に1回、コミット100回につき1度くらいの割合で〜と本に書いてあったのですがまだ一度もしたことないです。すいません。