【Git】任意のコミットまで戻す方法
はじめに(事象背景)
hogeというリポジトリをcloneしてきて、それをfugaというローカルリポジトリにpushしたつもりがhogeのリポジトリにpushしてしまって、「あ、ミスった」ってなって、remote addで変更してpushしたけど、「あ、hogeにpushしてしまってたから、まずhogeのリポジトリを前のコミット時に戻さないと!!」ってなった時の話
手順
以下の手順で行った。
// 1,現在連携しているリモートリポジトリの確認
git remote -v
// 2,今までのcommmitの履歴を確認することができる
git log
commit XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
// 3,git logでどこの部分まで戻したいかを確認できたらcommitの隣に書いてあるID的なものを入力
git reset --hard <commitID>
// 4(ここでエラー発生したら手順6へ),現在連携しているリポジトリを削除する
git remote rm <現在接続しているリポジトリのURL>
// 5,新しく連携するリモートリポジトリを登録する
git remote add <本来のリポジトリのURL>
// 6(5ができたらここはやる必要無し),しかし今回の場合はGithub上から元々連携していたリポジトリが削除されていたので(絶対やっちゃダメ)URLを変更することで対処
git remote set-url origin <本来のリポジトリのURL>
// 7,最後は強引にmain or masterブランチにpushして内容を反映させる
git push -f origin main or master
やってしまったこと
今回まずかったのは、誤ってremote addで登録していたリポジトリをGithub上から削除していたことだった。
でもGitにはそんな場合にも対処できるようコマンドが用意されていた。たぶん用途は違うかもしれないけど。とりあえず解決。
今後の課題
git puhs -f を使ってmain or masterにpushするのはかなりの力技なので、やらない方が良い。しかし、今回はただの設定ファイルのソースコードだったのでとりあえずはこれで対処した。
この記事のコメントに書いてあることがごもっとも
お世話になった記事
この記事が気に入ったらサポートをしてみませんか?