質問: ### 実現したいこと githubの最新状態を 本番サーバに適用させたい。 ### 前提 ローカルリポジトリ ↓ githubプライベートリポジトリ ↓ 本番サーバリポジトリ という構成で運用しています。 本番サーバにgit pull origin masterを実行する phpプログラムを配置し、github上でwebhookを設定して githubがpushを受け取ったタイミングで発火する形で運用していました。 ### 参考ページ 以下のページを参考にさせていただきました。 https://yosiakatsuki.net/blog/github-auto-deploy/ phpのソースはほぼ上記のまま使用しています。 ### 発生している問題 ローカルからgithubへのプッシュは成功します。 githubリポジトリも変更ファイルが反映されています。 github上のwebhook設定ページに表示されるログも200で返って来ています。 本番サーバ上のphpが吐き出すログファイルも成功した時と同じように反映されています。 しかし更新したファイルが反映されていません。 ### 試したこと 本番サーバにSSHログインして以下を実行してみました。 ``` $ git status # On branch master # Changes not staged for commit: # (use "git add/rm ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # modified: .gitignore # modified: category.php # modified: date.php ``` ``` git branch -a * master なぜかhead情報、リモートの情報が表示されませんでした。 ``` ``` $ git diff origin/master fatal: ambiguous argument 'origin/master': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git [...] -- [...]' ``` ``` $ git config -l remote.origin.url=git@github.com:example/example.git remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* exampleリポジトリは指定したものが設定されていました。 ``` 本番でgit log --decorateをするとgit hub上のコミットから3つくらい古いコミットが 本番で最新になっています。(HEAD, master)というものも最新コミットの最後に表示されています。 自分の予想ではおそらく .gitignore category.php date.php を直接FTPなどで書き換えてしまった状態 と予想しており、今後の対応として以下を考えていますが 現状を把握できている自信が少なかったためこちらで質問をさせていただいています。 ### 今後考えている対応 git reset --hard 本番の最終の一つ前のコミット ↑のコマンドで最終のコミットと 直編集されたファイル(category.phpとdate.php)の編集内容が削除される。 その後 git pull origin master もしくは git pull --rebase origin master rebaseと迷っている理由として 今後phpから自動プルしたいので 通常のpullをするとマージコミットが生成され githubよりも本番の方がコミットが進んでしまい 自動プルされなくなるのではないかという懸念があるため rebaseのほうがいいのか?と悩んでいます。 ### 質問したいこと 現状把握で間違っている点、不足しているコマンドがありましたら知りたいです。 githubの最新を本番に適用させ PHPからの自動プルを実行できる状態に戻したいのですが 前述の今後考えている対策で間違っている点、 もっとシンプルな方法などがありましたら知りたいです。 ※不足情報、必要な調査などありましたらできる限り対応したいと思いますので そちらもツッコミありましたらお願いいたします。
回答: 自己解決できました。 ``` git reset --hard 本番の最終の一つ前のコミット git log #本番のコミットが一つ巻き戻っていることを確認。 (この時点でgit hubの最新と本番では4つほど積まれているコミット数に差がありました) ローカルからgit hubにpush (本番でgit pull origin masterが実行される) ``` 今回はこちらの作業でgit hubの最新と同期 自動pullも問題なく実行されるようになりました。 結果的に質問に書かせていただいていた 現状把握も問題なかったと思います。 貴重なスペースありがとうございました。