Gitでコミットをやり直す方法 (パッチ編)
う〜ん、困った。
あるコミットはUTF-8、またあるコミットはEUC-JPでログを書くなんて…。
修正しようにも
$ git rebase -i
では文字化けてしてまってうまくいかない。
ちょっと大げさかもしれないけど、次の方法で修正する。
既存コミットのパッチに書き出す
第1引数にはパッチを作成し始めるコミットを指定する。
今回はすべて書き出すのでmasterを指定。
$ git format-patch master
コマンドを実行するとその場にパッチを作成しようとするので要注意。
patchesなど適当なディレクトリに移動しておくべし。
問題のパッチを修正
さて、以下のようなパッチファイルができた。
$ ls -1 0001-FIXME-xxx-xxx-xxx.patch 0002-FIXME-xxx-xxx-xxx.patch 0003-FIXME-xxx-xxx-xxx.patch 0004-FIXME-xxx-xxx-xxx.patch 0005-FIXME-xxx-xxx-xxx.patch 0006-FIXME-xxx-xxx-xxx.patch 〜 略 〜
中身はメールと同じ書式で、コミットログとファイルの差分が含まれる。
ここでは、問題のあるコミットログを修正する。
新しいブランチにパッチを適用
まずはパッチを適用する新しいブランチを作成、チェックアウト。
masterからのパッチなのでmasterを元にする。
$ git branch new_branch master $ git checkout new_branch
最後にamコマンドでパッチを適用。
$ git am *.patch
おしまい♪