こんにちは、@0yanです。
運用中のアプリのコード修正時、直前のgit add
を取り消したかったのですが、某記事に書いてあった「はじめてのgit addを取り消す」という内容を**「最近行ったaddの1回目を取り消す」**という意味だと勘違いし、git rm --cached -r .
を実行後、マスターブランチにgit push
するという大失態を犯しました。git init
した後のgit add
を取り消すという意味だったらしく、GitHubのマスターブランチは空っぽに・・・。
本記事はそれを解決したという記事です。こんなしょうもないことをする人はいないと思いますが、万が一、私と同じことをしてしまった方がいた時に役立つよう投稿しておきます。あぁ、恥ずかしい。
解決手順
- GitHubのリモートリポジトリで元に戻したいコミットのコミットIDを調べる
- ローカルリポジトリで元に戻したいコミット以降のコミット(=やらかしたコミット)を、
git reset --hard [1で調べたコミットID]
によって削除 -
git push -f origin master
でリモートリポジトリに強制プッシュ
補足
git reset
はあまり推奨されない方法らしく、本当はgit revert
を使った方が良いそうです。詳しくは以下の記事等をご参照ください。