個人開発でもリモートリポジトリとしてGitHubを使っている方はいらっしゃると思います。
今回は誤ったプッシュをしてしまい、修正のための操作を色々行った結果コミットログもマージもややこしくなってしまった...という事態を想定しています。
###できること
- 特定コミットより後のログの全消去
- 特定コミットをmasterブランチのHEAD化
※チーム開発の際は大惨事となる可能性があるので、この方法は使用しないでください。
また、消去は取り消せないため自己責任でお願いします。
なお、操作はローカルリポジトリのmasterブランチ上で、コマンドラインからを想定しています。
##手順
###1. 戻したいコミット地点のハッシュ値を調べる
git log
ハッシュ値というのはコミットごとに振られるIDのようなものです。
b606ffe5f3ad20ce8b9ea3f7fd25d...のような値が見つかると思います。
logコマンドはデフォルトであればlessコマンドと操作が同じなので、ターミナルから捜査している場合はqで戻れます。
###2. HEADを戻したいコミット地点に指定する
git reset --hard 先ほど調べたハッシュ値
ハッシュ値は同一リポジトリ内で重複が無ければ省略が可能です。
おおよそ上7桁くらい入力すれば問題なく省略が使えると思います。
HEADが変更されたことを示すメッセージが出ればOKです。
###3.強制プッシュ
git push -f origin ハッシュ値
これで特定コミット地点がmasterのHEADになります。