2014年4月30日水曜日

Githubにpushしてしまったコミットログを書き換える方法

よく「歴史を書き換える」と言われている作業です
特に今回はコミットログとコミットしたユーザ情報を書き換える方法をご紹介します
違うマシンからpushすると.git/configとかを設定するのを忘れて変なユーザでコミットすることがたまにあるのでメモしておきます

git rebase -i HEAD~3
    3の部分はHEADからどらくらいまで遡るかを指定します
    3つ前のpushまで書き換えたい場合は3を指定します
    エディタが立ち上がるので歴史を書き換えたい行をpick -> editをする
    :wqで保存
    editとした部分で止まるのでコミッター情報を書き換える

git commit --amend --author="username <email@address.com>"
    エディタの起動とともにコミットログを書き換える画面が表示されるのでコミットログを書き換える
    このとき全く書き換えないとpushすることができないっぽいので、ちょっとでもいいので変更すること

git push -f
    コミットが完了したらpushする、このとき「-f」をつけてローカルの変更を無理矢理メインストリームにpushする
    Github上のコミットログで確認するとログとコミッタ情報が書き換えられていると思います

git rebase --continue
    rebase作業を続けます
    他にもeditを指定している場合は同じように修正してcommit -> pushします
    すべてのeditが終了すれば完了です


以上です
「-f」でローカルの情報を強制的にpushするのでローカルの情報はpullして最新の状態にしてから実施することをおすすめします

0 件のコメント:

コメントを投稿