見出し画像

【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するのはかなりの力技なので、やらない方が良い。しかし、今回はただの設定ファイルのソースコードだったのでとりあえずはこれで対処した。

この記事のコメントに書いてあることがごもっとも

お世話になった記事


この記事が気に入ったらサポートをしてみませんか?