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

プッシュしたのにリモートで反映されてない!という時にとった対処法。
Gitを使い始めて間もないので本当はもっとちゃんとした方法があるんだろうなぁ、と思いつつの記事になるので一つの参考程度にご覧ください。
陥った症状
ローカルでテストしてOKとなり、いつものようにコミットしてプッシュした所、本番環境で変更が反映されてない!?なんでっ??プッシュ出来ない!?、、とプチパニック状態になる。
ここで状況と環境を一旦整理。
環境としては、ローカルからリモートとGithubへ同時pushしている。
リモートでは、まずベアリポジトリでpushを受けて、ベアリポジトリのhookがpushを感知して公開ディレクトリのリポジトリがベアリポジトリからpullを行う処理が走るようになっている。
どこがダメだったのか確認。。
それぞれ
1 2 |
git log |
で確認してみると、
OK:ローカル ⇒ push ⇒ Github (※そもそも関係ないが一応確認。)
OK:ローカル ⇒ push ⇒ リモート(ベアリポジトリ)
NG:リモート(ベアリポジトリ) ⇒ リモート(pull ⇒ 公開ディレクトリのリポジトリ)
どうやらベアリポジトリまではコミットの内容がちゃんとログに残っていたので大丈夫みたい。
公開ディレクトリからpullが出来てないという事だろうから実際にpullして確認。本来は自動でやってる部分。
1 2 |
git --git-dir=.git pull /var/www/hoge.git master |
するとエラーが出たっ
1 2 3 4 |
error: Your local changes to the following files would be overwritten by merge: hoge.php Please commit your changes or stash them before you merge. |
心当たりがあります。リモートファイルを直接編集して保存しました。。Git初心者丸出しですね。。恐らく、ここでブランチやらマージやらの勉強をすれば解決するんだろうけど、なんせ時間がなかった。。
手っ取り早く本番環境にローカルの内容を反映させる方法はないのか!?
git reset –hard で過去に戻ってから最新のものをpullしたら出来た。
1 2 |
git log |
でログを確認、戻りたいコミットのハッシュ値を取得し、過去へ戻る。
1 2 |
git reset --hard hogehogehogehoge |
そして戻ったこの時点で、先程は出来なかったpullをしてみる。
1 2 |
git --git-dir=.git pull /var/www/hoge.git master |
出来たっ!!
正当なやり方ではないのかも知れないけど、応急処置的には出来たのでメモとして残しておく。
-
前の記事
パンくずリストのプラグイン「Breadcrumb Trail」を入れてみた。 2018.03.18
-
次の記事
MacのためのPython環境構築 2019.05.05