GItの履歴を改ざんする
Gitの履歴を改ざんするって、表現的に悪いイメージが見えますが
例えば、あるファイルの内容をタイプミスしてコミットした後、そのミスに気が付き
修正後、再度コミットするというケースはよくあるかと思います。
このようなコミットは履歴として残したくない場合は、「git rebase」コマンドを利用することで解決できます。
$ git rebase -i HEAD~2
上記は、現在のブランチのHEADを含めた2つまでの歴史を対象として以下のような
エディタが立ち上げられます。
pick XXXX01 タイプミスを修正 pink XXXX02 タイプミスしてしまったよ 以下省略
ハッシュ「XXXX02」の行に対し、「pick」という個所があるかと思います。
それを「fixup」に書き換えます。そうすることで2つのコミットが1つのコミットとして扱われます。
ちなみに「pick」は何もしないという意味になります。
pick XXXX01 タイプミスを修正 fixup XXXX02 タイプミスしてしまったよ 以下省略
「git rebase」を使うと、最新のコミットから指定したコミットまでの歴史を対話式に改変することができます。具体的には以下のことができます。
具体的には…
pick
何もしない。現在の状態をそのまま保つ。
reword
コミットメッセージを編集する。
squash
1つ前のコミットと合体させる。
fixup
基本としてはsquashとほぼ同じだが、コメントは1つ前のコメントが採用される。
この辺については使い方も含めて、時間があればまとめておきたいと思います。
また、コミットのメッセージを修正したい場合は以下のコマンドで修正することができます。
$ git commit --amend
上記のコマンドを実行することで、エディタが立ち上げられ、直近コミットしたメッセージが表示されます。
そのメッセージを修正して保存します。