見出し画像

GitとGitHubの違い。そして'push'一発でサイト更新する術を知る

今回のお題はレンタルサーバ(Xserver)上にGitの共有リポジトリを作って、ローカルリポジトリからの'push'一発でウェブサイトを更新させるというもの。もはや、GitHubを介することもない。ってか、ココがおばちゃんの勘違いの全てだった。

Gitは『バージョン管理システム』の一種であって他にもバージョン管理システムはある。
GitHubは『Gitホスティングサイト』の一種であって他にもGitホスティングサイトはある。

Git != GitHub ってことを、字面では理解できた。

が、しかし、実際に自分がGitを体験しようと思ったら、何をどこからどうすればよいかわからなかった。
しかも、GitというものをGitHubについての記事で知ったから、「Gitを体験するならGitHubを使わなければならない。」と思っていたし、XserverにGitは予め入っていることを知っても、「GitHubで作れるようなリポジトリを作るには、壮大な設定が必要なんだろう。」と勝手に思い込んでいた。

実際はGitHubで作れるようなリポジトリを作るには --bare って付ければ良かった。
(例えば、$ git init --bare とか)

今思えば、おばちゃんのような一人作業者は、最初からXserverのGitだけを使えばよかったのかもしれない。GitHubは共同でプロジェクトを進める人達のためのステキなサービスなのだから。

けれど、GitHubのようにリポジトリの内容が見やすくなっているところから始めて、結果良かったと思う。GitとGitHubの理解があやふやなおばちゃんでも、何とか使い始めることができたのはGitHubのおかげ。

XserverのGitから始めていたら、きっと100%挫折していた。

・・・

ということで、ここからは今回の作業の手順を自分のためにメモしていきます。(参考サイトの手順に自分の環境を当てはめただけ)

↓↓↓今回の参考サイト↓↓↓

前提

■自分のパソコン
macOS Monterey(ver.12.6)
git version 2.37.0 (Apple Git-136)

■XserverのGit(予め用意されているもの)
git version 1.8.3.1

■SSH接続の設定(公開鍵・秘密鍵は設定済)
自分のパソコンのユーザのルート
% cat .ssh/config
Host xserver
HostName サーバーID.xsrv.jp
Port 10022
User サーバーID
IdentityFile ~/.ssh/id_rsa

<ログイン>
% ssh xserver

<接続先アドレス>
ssh://xserver/~/example.com

リモートノンベアリポジトリ(Xserver)の作成

公開ウェブサイトのルートディレクトリを作業リポジトリとする。

$ cd ~/example.com/public_html
$ git init
$ git add .
$ git commit -m "initial commit"
$ git branch
* master
$ git branch --move master main(←ブランチ名変更)
$ git branch
* main


リモートベアリポジトリ(Xserver)の作成

公開ディレクトリ(public_html内) に作ったノンベアリポジトリを、ドメイン名直下のディレクトリにクローンして、バージョン管理のためのベアリポジトリ(repo.git)とする。

$ cd ~/example.com
$ git clone --bare --shared ~/example.com/public_html repo.git
$ cd ~/example.com/repo.git
$ cat config(←設定の確認)

Xserverのファイルマネージャー ~/example.com/repo.git/config でも確認できる。

git pull(Xserver)を自動でさせる設定

Git フック(hooks)のpost-receive(処理が終了した後で実行される)ファイルに、ローカルリポジトリ(自分のパソコン)からリモートベアリポジトリ(repo.git)にpushした後で、公開ディレクトリ内のリモートノンベアリポジトリ (/public_html/.git)にpullさせるシェルスクリプト

$ cd ~/example.com/repo.git/hooks

vi エディタでpost-receive(ファイル)を開いて

$ vi post-receive

[ i ]key押下(入力モード 現在のカーソル位置に文字を挿入する)

#!/bin/sh

cd ~/example.com/public_html
git --git-dir=.git pull ~/example.com/repo.git main

[esc]key押下
[:][w][q]key押下でviを抜ける(w=write)(q=quit)

Xserverのファイルマネージャーでも作成・編集できる。

post-receiveファイルに実行権限(x)を付ける

$ chmod +x post-receive
-rwxr-xr-x(←755

Xserverのファイルマネージャーでも変更できる。

ローカルリポジトリ(自分の作業ディレクトリ)作成と動作テスト

% git clone ssh://xserver/~/example.com/repo.git
% ls
repo
% cd repo
% git branch
* main
% touch test.txt(お試しファイル作成)
% git add .
% git commit -m "test commit"
% git push


コミット文がなんかテキトーですが・・・

無事、Xserverのpublic_html内にtest.txtが追加され、動作確認できました。
ログをGit Graphで見ると、mainブランチしかいないので線が真っ直ぐ・・・(公開用のファイルのレポジトリだからこれでいいのかな?)

兎にも角にもローカルリポジトリからの’push’一発でサイト更新できるようになりました!
紆余曲折しましたが、これにてGit連携はひとまず最終形といたします。

それにしても、GitとGitHubの違いを(ふんわりでも)理解するまで3年弱かかりました。

この調子だと、フロントエンドの知識を得る前に、おばちゃんの寿命が尽きそう・・・

WEBデザイナー(自営業)のおばちゃんです。最近はBlenderネタ多めです。