Unyablog.

のにれんのブログ

Git で昔の commit のファイルを修正する

最近 android app をつくろうとしていてGit を絶賛使用中なわけですが、 gitの履歴にも残ってほしくないようなミスを発見してしまって上書き commit しても逆に目立ってアレアレなわけです。

というわけで初めの commit を修正してしまおう、ということになったのでそのメモ。

まずは

$ git rebase -i <該当するhash>

します。hash 調べるの面倒臭かったら HEAD~3 とかで頑張りましょう。

ちなみに一番最初の commit を修正するには hash の部分を --root にする必要があります。

そしたらどこの commit を修正するか聞かれる(ファイルエディタが立ち上がる)ので修正したい commit を pass から edit にします。

そして修正してね~~~と言われるので修正したものを add したり消したいものを rm したりしたら

$ git commit --amend

すればまたファイルエディタが立ち上がります。コメントを修正したいならここでなおすと commit が修正されます。

そして

$ git rebase --continue

することで元あった残りの commit が上書きされていきます。

ここで conflict でも発生したらいつもと同じように修正して add して対処していきます。

そして全てが終わり push したくなりますがそのままではできません。強制上書きやらブランチの登録しなおしやらしなきゃいけないので

$ git push -f --set-upstream origin <ブランチ>

というようにします。 -f が強制上書き、 --set-upstream がブランチの登録になります。めでたしめでたし。

参考URL

コミットの履歴を書き換える【コミットの書き換え】/ サルでもわかるGit入門

初心者でも分かる!git rebaseの使い方を解説します/株式会社LIG

遥佐保の技術メモ:[Git]ローカルを強制上書きして、作業をなかったことにしたい

git addの取り消しと、コミット済みのファイルを除外する方法 - kanonjiの日記