前回からの続きです。
Xserver に Git さんが居ることがわかったので、今回はちゃんと、ベアリポジトリを作って、SourceTree から操作しよう!サイトのファイル更新も SourceTree からやってみよう!の回ですm(_ _)m
ベアリポジトリとは、HEADを持たない、いわゆるリモートリポジトリのことです。GitHub や GitLab で動いているリポジトリが、ベアリポジトリです。
逆に、HEADを持っている(作業ファイルを監視している)ノンベアリポジトリがローカルリポジトリです。
Xserver にベアリポジトリとノンベアリポジトリの2つを用意することで、Git でのファイル更新ができるようになります。
SSH接続を簡略化する
SSH についてですが、前回はスルーしてしまいましたが、ターミナルから毎回ログインコマンドを打つのも大変なので、config ファイルを作成します。
vi ~/.ssh/config
Host 【好きな認識名】
HostName 【ホスト名】
User 【アカウント名】
IdentityFile 【秘密キーのパス】
Port 10022
TCPKeepAlive yes
IdentitiesOnly yes
記入できたら、:wq で保存終了します。忘れずに読み込み権限も付与します。
chmod 600 ~/.ssh/config
これで簡単にSSH接続ができるようになりました。
ssh 【好きな認識名】
サーバーにベアリポジトリとノンベアリポジトリを用意する
それでは、サーバーにまずベアリポジトリを用意します。
ディレクトリ構成は下記の想定です。
/demo.git | .gitとしていますが、ディレクトリです。ベアリポジトリが入ります。 |
/demo | ファイルの更新ができるディレクトリです。ノンベアリポジトリが入ります。 |
ベアリポジトリ用のディレクトリを作ります。cd でディレクトリを作りたい好きな場所に移動してください。mkdir でディレクトリを作ります。
cd 【ディレクトリを作りたい好きな場所へ】
mkdir demo.git
作成したディレクトリに移動してベアリポジトリを作ります。
cd demo.git
git init --bare
続いて、ノンベアリポジトリを生成します。
git clone 【/homeから始まるディレクトリのフルパス】demo.git/ 【/homeから始まるディレクトリのフルパス】demo/
SourceTree の設定
ベアリポジトリとノンベアリポジトリの用意ができたので、SourceTree の設定もします。
新規ボタンから「URLからクローン」を選択します。
ソースURLに、SSHの認識名に続けてdemo.gitのフルパスを入力します。
秘密キーのパスワードを聞かれたら入力してください。保存先のパス、名前はお好きに設定ください。
ssh://【configで設定した認識名】【/homeから始まるディレクトリのフルパス】demo.git
SourceTree の準備ができましたので、適当に index.html を作ってプッシュします。
ファイルが更新されるか確認します。cd で demo ディレクトリに移動し、git pull します。
cd demo
git pull
ブラウザで、/demo/index.html が確認できれば成功です!
git pull を自動化する
git pullを自動化し、SourceTree からのプッシュのみでサーバーのファイルが更新されるようにします。
demo.git ディレクトリ内にある hooks ディレクトリに移動します。
cd demo.git/hooks
post-updateというファイルを生成します。
vi post-update
実行文を記入します。終わったら :wq で保存終了します。
#!/bin/sh
cd 【/homeから始まるディレクトリのフルパス】demo
git --git-dir=.git pull
実行権限も付与します。
chmod a+x post-update
ローカルの index.html を変更し、プッシュします。
ブラウザから /demo/index.html が変更されているか確認してみましょう( ´ ▽ ` )ノ
どうしてベアリポジトリとノンベアリポジトリの2つが必要なの?
ベアリポジトリは実際のファイルを持っていないので、ファイルの更新をするには、実際のファイルを持つノンベアリポジトリの力も必要だからです…!