###実現したいこと
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 <file>..." to update what will be committed) # (use "git checkout -- <file>..." 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 <command> [<revision>...] -- [<file>...]'
$ 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からの自動プルを実行できる状態に戻したいのですが
前述の今後考えている対策で間違っている点、
もっとシンプルな方法などがありましたら知りたいです。
※不足情報、必要な調査などありましたらできる限り対応したいと思いますので
そちらもツッコミありましたらお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。