『git reset –hard 過去のコミットのハッシュ値』で過去の状態に戻す

  • 2018.03.24
  • Git
『git reset –hard 過去のコミットのハッシュ値』で過去の状態に戻す

プッシュしたのにリモートで反映されてない!という時にとった対処法。
Gitを使い始めて間もないので本当はもっとちゃんとした方法があるんだろうなぁ、と思いつつの記事になるので一つの参考程度にご覧ください。

陥った症状

ローカルでテストしてOKとなり、いつものようにコミットしてプッシュした所、本番環境で変更が反映されてない!?なんでっ??プッシュ出来ない!?、、とプチパニック状態になる。
ここで状況と環境を一旦整理。

環境としては、ローカルからリモートとGithubへ同時pushしている。
リモートでは、まずベアリポジトリでpushを受けて、ベアリポジトリのhookがpushを感知して公開ディレクトリのリポジトリがベアリポジトリからpullを行う処理が走るようになっている。

どこがダメだったのか確認。。
それぞれ

で確認してみると、

OK:ローカル ⇒ push ⇒ Github (※そもそも関係ないが一応確認。)
OK:ローカル ⇒ push ⇒ リモート(ベアリポジトリ)
NG:リモート(ベアリポジトリ) ⇒ リモート(pull ⇒ 公開ディレクトリのリポジトリ)

どうやらベアリポジトリまではコミットの内容がちゃんとログに残っていたので大丈夫みたい。
公開ディレクトリからpullが出来てないという事だろうから実際にpullして確認。本来は自動でやってる部分。

するとエラーが出たっ

心当たりがあります。リモートファイルを直接編集して保存しました。。Git初心者丸出しですね。。恐らく、ここでブランチやらマージやらの勉強をすれば解決するんだろうけど、なんせ時間がなかった。。

手っ取り早く本番環境にローカルの内容を反映させる方法はないのか!?

git reset –hard で過去に戻ってから最新のものをpullしたら出来た。

でログを確認、戻りたいコミットのハッシュ値を取得し、過去へ戻る。

そして戻ったこの時点で、先程は出来なかったpullをしてみる。

出来たっ!!

正当なやり方ではないのかも知れないけど、応急処置的には出来たのでメモとして残しておく。