1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカルからリモートの作業ディレクトリにgitで自動更新かける方法

Last updated at Posted at 2024-10-20

概要

AWS EC2のLinuxにファイル編集を行う際、VScodeのremote-sshを使用していたのですが、
このremote-sshがリソースをバカバカ食ってサーバーを落とすことが多々ありました。

そこで別の方法を模索した際に、ローカルのVScodeで編集してリモートのgitにpushする方法となりました。その際問題点などがあったので、備忘録として記載していく。

前提条件
・ローカルPCからリモートに対してssh接続できる
・ローカル/リモートにgit環境を構築している
・webapplicationの作成で/var/www/test 配下を使用

①リモート環境にベアリポジトリを作成

ベアリポジトリ(bare repository):
gitの変更記録を保持するリポジトリ。基本的にpushするリポジトリはベアリポジトリである必要がある。対するノンベアリポジトリと違い作業ディレクトリがない。

$ cd ~/var/www/test/repo/remote.git ※フォルダなかったのでmkdirで作成
$ git init --bare

一応ベアリポジトリとなっているか確認

$ git config --get-all core.bare
true ※trueとなっていればベアリポジトリ

もしノンベアリポジトリであれば下記で変更

$ git config core.bare true

② リモート環境にノンベアリポジトリを作成

$ cd ~/var/www/test
$ git init
$ git pull repo/remote.git

③ ベアリポジトリに更新があった際、ノンベアリポジトリを自動更新させる

gitのhookという仕組みで自動更新をおこなうことができます
(pushが行われた際、/.git/hooks/post-receive のスクリプトが実行される)

$ cd ~/var/www/test/repo/remote.git/.git/hooks
$ mkdir post-receive
$ vi post-receive

以下内容を追記

#!/bin/sh

cd ~/var/www/test || exit
unset GIT_DIR
git pull repo/remote.git

パーミッションも変更しておくこと!

$ chmod 755 post-receive

④ローカル環境からpush

ローカル環境にリモートリポジトリを落としてくる(任意の作業場所)

$ git init
$ git clone ssh://ec2-aws/var/www/test/repo/remote.git
※ssh接続のconfig設定で"ec2-aws"をhostとして登録してます

適当にpushをしてみる

$ git remote add ec2 ssh://ec2-aws/var/www/test/repo/remote.git
$ git push ec2 master

無事ノンベアリポジトリの作業ディレクトリも自動更新されました

参考資料

・基本指針
https://www.nekotricolor.com/entry/practice-of-bare-and-non-bare-repository-manage-wordpress-themes-with-git

・gitのノンベアリポジトリについて
https://qiita.com/devzooiiooz/items/56a02342d9d65d79f6c3

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?