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