さくらのレンタルサーバーにgitのリモートリポジトリを作成する

さくらのレンタルサーバーに専用リモートリポジトリを作成


さくらのレンタルサーバーへ、gitのリモートリポジトリを作成する手順をメモします。

github等のサービスを使用しないでバージョン管理用の専用リポジトリを作成する事が出来ます。

環境:さくらのレンタルサーバ スタンダードプラン、 git version 2.23.0(インストール済み)

ベアリポジトリの作成

ローカルPCからSSHクライアントを利用して、サーバーへログインします。
(Macのターミナルを使用)

$ ssh アカウント名@XXXXXX.sakura.ne.jp

1. ログイン直後、home配下、アカウント名がカレントとなります。

% pwd
/home/(アカウント名)

2.リポジトリ用のディレクトリを作成する
(ディレクトリの拡張子を.gitとする必要がある)

% mkdir -p repository/versions.git

3.作成したディレクトリへ移動

% cd repository/versions.git
% pwd
/home/(アカウント名)/repository/versions.git

4.更新情報のみを持つ「ベアリポジトリ」として初期化する。

% git init --bare --shared
Initialized empty shared Git repository in /home/(アカウント名)/repository/versions.git/

 

リポジトリをクローンする

作成したベアリポジトリをクローンし、同サーバー内とローカルPC上にリポジトリを作成していきます。

作成するリポジトリの更新情報がクローン元のベアリポジトリで保存・管理され、
クローン同士、更新情報共有出来るようになります。

サーバー内にリポジトリをクローン

ベアリポジトリを作成した同サーバー内に、リポジトリを作成します。

ローカルPCに後ほど作成するリポジトリから見てリモートリポジトリとなり、
サーバー公開ディレクトリのソース等もバージョン管理出来るようになります。

1./home/(アカウント名)/www配下に空のディレクトリを作成する

% mkdir /home/(アカウント名)/www/newapp

2.ベアリポジトリから先ほど作成したディレクトリ内にクローンする
(空のディレクトリでないとクローン出来ません)

% cd /home/(アカウント名)/www/newapp
% git clone /home/(アカウント名)/repository/versions.git/
Cloning into 'versions'...
warning: You appear to have cloned an empty repository.
done.

done.でクローン完了。
クローン元のディレクトリから.git拡張子を除いた名前のディレクトリ(versions)が作成されており、
この配下がgitバージョン管理の対象となります。
(gitが存在している)

% ls -a versions/
.	..	.git

git remote -v コマンドで作成したクローンがGithubリポジトリへ紐づいている事が確認できる。

% cd /home/(アカウント名)/www/newapp/versions/
% git remote -v
origin	git@github.com:(githubアカウント名)/(githubリポジトリ名).git (fetch)
origin	git@github.com:(githubアカウント名)/(githubリポジトリ名).git (push)

ローカル環境にクローンする

環境:Mac 10.13.6、 Sourcetree 2.7

ローカル環境にローカルリポジトリとしてクローンを作成します。

gitクライアントソフトのSourcetreeを使用します。

Sourcetreeメニューからファイル > 新規 > URLからクローンを選択

ソースURLの箇所へ通信方式をsshにして、アカウント名、さくらのレンタルサーバーのドメイン、作成したベアリポジトリのパスを指定します。

ssh://(アカウント名)@(アカウント名).sakura.ne.jp/home/(アカウント名)/repository/versions.git

クローンをクリックするとローカルで指定した箇所にリポジトリが作成されます。

バージョン管理の検証

クローン作成したリポジトリ(ローカル&リモート)同士でバージョン共有を行えるか確認します。

ローカルリポジトリから変更を加える

妥当なファイルを追加してコミット
(Sourcetree)

コミットが完了したら、サーバーのリモートリポジトリを更新してみます。(pullする)

リモートリポジトリから変更をプルする

サーバーへログインして、リモートリポジトリへ移動

% cd www/newapp/versions/
% pwd
/home/(アカウント名)/www/newapp/versions

コマンド git pull で最新のバージョンに更新

% git pull
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /home/(アカウント名)/repository/versions
 * [new branch]      master     -> origin/master
% ls
index.php
%

ローカルでの変更がリモートへも反映されています。
次にリモートからも変更を加えてみます。

リモートリポジトリから変更を加える

リモートリポジトリ内で妥当なファイルを作成

% touch style.css
% ls
index.php	style.css

git add 変更をステージング

% git add .

git commit 変更をコミット

% git commit -m "style.css add"

git push 変更をプッシュ
done. を表示、masterブランチ(本流)へプッシュが成功しているのがわかる。

% git push origin master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 296 bytes | 296.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /home/(アカウント名)/repository/versions.git/
   5e8c8ac..2112b76  master -> master
ローカルリポジトリから変更をプルする

リモートからコミット、プッシュした変更内容をローカルリポジトリへ反映。

Sourcetreeメニューから、フェッチ > リモートから全て取得する

リモートでコミットした内容がわかる(メッセージも反映されている)

プル実行で、ローカルリポジトリを更新する。

参考
GitとSourceTreeではじめるバージョン管理と自動デプロイ
gitのベアリポジトリとノンベアリポジトリ

Follow me!