広告 Git

【Git】pushすると自動でpullするようにする

gitロゴ

前回、ローカル・リモートそれぞれで更新管理用git・本番環境用gitを構築しました。
でも、commit・push・pullをしてやっとweb公開されるというちょっと手数が多い感が…。ということで、pullを自動化!

修正のフローをおさらい

  • 1.ローカルで修正してcommit
  • 2.リモートの更新管理用にpush
  • 3.リモートの本番環境で、更新管理用からpull

wordpressのアクションフックやフィルターフックみたいに、
gitにもコミットやプッシュの前後に処理を挟み込むことができます。それがhooksです。

hooksというフォルダの中にある、〇〇.sample というファイルがフックスクリプトです。このファイルにスクリプトを書き、ファイル名を変更すれば動作します。

hookはココ!

pushするだけでOK!な、pullの自動化をするよ!

今回は『push』された後(正確には全てのブランチが更新された後)に処理をさせたいので、post-receive.sample というファイルを編集して使います。

自動化させるための方法

『push』されるのは更新管理用gitなので、この中のpost-receiveを修正していきます。

post-receive.sample ファイルを 編集用にリネームする

pushされるサーバー側で以下を行います。

[shell toolbar="true"]
$ cd ~/git/test.git/hooks/
$ mv post-receive.sample post-receive
[/shell]

1行目:hooksフォルダに移動
2行目:post-receive.sampleというファイルを、post-receiveというファイル名に変更

ファイル名を変えた、post-receive を編集する

[shell toolbar="true"]
$ vi post-receive
(『i』と入力すると文字入力可能になります)
[/shell]

入力する内容は以下。

[shell toolbar="true"]
#!/bin/sh

cd ~/web/サイト名/wp-content/themes/
git --git-dir=.git pull origin master
[/shell]

3行目:本番環境gitに移動
4行目:本番環境gitで、origin(更新管理用git)からpullするスクリプト

4行目の、--git-dir=.git は、これ記述しないと「ここはgitリポジトリじゃない!」と怒られるらしいです。

入力したら、以下の様にして保存します。
『Esc』・・・文字入力モード終了
『:wq!』・・・保存して終了

post-receive ファイルの権限を変えます。

[shell toolbar="true"]
chmod +x post-receive
[/shell]

完了★

あとは試しにpushしてみて、pullされたか動作確認してみてください。
ちなみに、私はhetemlとロリポで動作確認できました~(´ω`*)ヨカッタ~

gitの本ならこれがオススメです。

[itemlink post_id="1467"]
[itemlink post_id="1466"]

  • この記事を書いた人

サオリサン

WEB制作のディレクター・制作・運営支援をしてます(フリーランス&会社員)。アクセス解析してサイト改善するのが好き。

-Git