Drafts

@cm3 の草稿置場 / 少々Wikiっぽく使っているので中身は適宜追記修正されます。

GitHub のコミット一括削除方法

どこまでもどるか決める、一括削除が適切か立ち止まる

多くの人が参加しているようなプロジェクトではコミットログをいじることは望ましくないとか、基本的にはコミットログをいじることは推奨されていません。パスワードのような機密情報をアップしてしまったとか、大容量のファイルを誤ってアップしてしまったとかそういう場合に適切なんじゃないかと思います。私の場合は後者でした。

また、いざという時のために現在のワークスペースをどこかにコピーしておくことをお勧めします。

手元のワークスペースを直前のコミットの状態に合わせる

git reset --hard HEAD

手元のコミットログを削除

たとえば4つ前まで戻す場合は

git rebase -i HEAD~4

すると

pick c047b57 コミットメッセージ1
pick 7ad53bb コミットメッセージ2
pick 4904961 コミットメッセージ3
pick 0f4a444 コミットメッセージ4

みたいなのを編集する画面になるから、残したいコミットだけを残して削除、保存、エディタを閉じる。

Successfully rebased and updated refs/heads/master.

みたいなメッセージが出る。

それを強制的に GitHub にあげる

git push origin +master

この + 記述が無いと Updates were rejected エラーが出ます。

以上。

参考