みんなの「作ってみた」

XSEVER(レンタルサーバ)をGitホスティングサービス(リモートリポジトリ)として使う手順

2019/07/01

shu1rou
shu1rou
フリーターランス いいねが欲しい・・・

環境

MacOSX Mojave
ターミナル
https://www.xserver.ne.jp/
XSERVER契約済み
(参考:https://zudoh.com/misc/create-git-private-repository-on-rental-server
上記でうまくいかなかったので、調べました。

XSEVER準備

まずはXSEVERに公開鍵を登録。
事前に生成してある秘密鍵にはパスワードを設定してあります。
(参考:https://www.xserver.ne.jp/manual/man_server_ssh.php

以下の方法でsshコマンドでXSEVERに接続できるか確認します。

$ ssh -i ~/.ssh/id_rsa サーバーID@サーバーID.xsrv.jp -p 10022
$ Enter passphrase for key '/Users/user/.ssh/id_rsa':
$ 秘密鍵パスワードを入力
$ [サーバーID@svxxxx ~]$ #ログインできたのを確認

Server側でgitホスティングの準備

[サーバーID@xxxxxx ~]$ mkdir /tmp/git-remote
[サーバーID@xxxxxx ~]$ cd /tmp/git-remote
[サーバーID@xxxxxx git-remote]$ git init --bare
[サーバーID@xxxxxx git-remote]$ pwd
/home/サーバーID/tmp/git-remote

Server側の設定はここまで。

ローカル側の設定

対象のディレクトリで

$ git init
$ git add -A
$ git commit -m "first commit"

これでローカルにmasterブランチが作成されました。
確認方法は$ git branchmasterと出ます。

ではServerとローカルのmasterブランチを紐付ける準備をします。

$ vi ~/.ssh/config

上記でid_rsaの配置箇所などを定義して以下のように保存します。

~/.ssh/config
Host xserver
  HostName  サーバーID.xsrv.jp
  Port      10022
  User      サーバーID
  IdentityFile  ~/.ssh/id_rsa

次にgitのremoteを指定してあげます。
home/サーバーID/tmp/git-remoteの部分はServer側の絶対パスです。

$ git remote add origin ssh://xserver/home/サーバーID/tmp/git-remote

準備が完了したので、以下のコマンドでremotemasterpushします。

$ git push origin master
Enter passphrase for key '/Users/user/.ssh/id_rsa': #秘密鍵のパスワード聞かれます

うまくいくと、

Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 1.55 KiB | 1.55 MiB/s, done.
Total 7 (delta 0), reused 0 (delta 0)
To ssh://xserver/home/サーバーID/tmp/git-remote
 * [new branch]      master -> master

作業完了。

試しにgit pullしてみる

$ git pull origin master
Enter passphrase for key '/Users/user/.ssh/id_rsa': 
From ssh://xserver/サーバーID/tmp/git-remote
 * branch            master     -> FETCH_HEAD
Already up to date.

成功すると上記の様な感じ。(リモートリポジトリ作成までを目標としてるので、コマンドの省略やパスワードの省略手順については省略mm)

微妙にハマったところ

設定が間違えていたりすると、以下のエラーが出ることがある場合があります。
(参考:https://qiita.com/KTakata/items/3e5073072e037c289a3a

fatal: No such remote 'origin'  
fatal: remote origin already exists.

そんな時は以下のコマンドでremoteのブランチをremoveできます。

$ git remote rm origin

removeしてから、

$ git remote add origin ssh://xserver/home/サーバーID/tmp/git-remote

にて再設定できます。

今回とは関係ないですが、リモートホスト情報を変更することも可能です。

$ git remote -v #remote urlの情報を確認できる
$ git remote set-url origin {new url}  #remote urlを変更できる

以上ですmm