質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

解決済

1回答

4183閲覧

githubの最新状態を 本番サーバに適用させたい。

ruuusaamarki

総合スコア468

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

1クリップ

投稿2019/01/07 01:51

編集2019/01/09 04:17

###実現したいこと
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からの自動プルを実行できる状態に戻したいのですが
前述の今後考えている対策で間違っている点、
もっとシンプルな方法などがありましたら知りたいです。

※不足情報、必要な調査などありましたらできる限り対応したいと思いますので
そちらもツッコミありましたらお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決できました。

git reset --hard 本番の最終の一つ前のコミット git log #本番のコミットが一つ巻き戻っていることを確認。 (この時点でgit hubの最新と本番では4つほど積まれているコミット数に差がありました) ローカルからgit hubにpush (本番でgit pull origin masterが実行される)

今回はこちらの作業でgit hubの最新と同期
自動pullも問題なく実行されるようになりました。

結果的に質問に書かせていただいていた
現状把握も問題なかったと思います。

貴重なスペースありがとうございました。

投稿2019/01/09 04:23

編集2019/01/09 04:24
ruuusaamarki

総合スコア468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問