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

さくらインターネットのレンタルサーバー(スタンダードプラン)に git を導入してみました。

当初、Subversion を入れようと思ったのですが、色々なサイトで紹介されている手順を参考にしても仕様が変わってしまっているのか gmake でエラーになり、色々なものを無効にしないと入らない感じだったので git にしました。

レンタルサーバで SSH のログインから git のインストールするまで、初めての作業だったのでメモしておきます。もしかしたら好ましくない設定をしているところがあるかもしれません?

1. さくらインターネットのレンタルサーバに SSH でログイン

ログイン時に使うホスト名は最初にもらった sakura.ne.jp の方です。パスワードは変更していなければ登録時にメールで送られてきたものを使います。

bash
ssh アカウント名@example.sakura.ne.jp

画面に以下のように表示されればログイン済み。

csh
Welcome to FreeBSD!

%

bash に変更

さくらインターネットのレンタルサーバは csh のようなので bash を使いたい場合は以下のコマンドで変更可能。

bash
bash

2. サーバーに git をインストール

git インストールまでの手順はこんな感じです。

  1. インストール作業用ディレクトリの作成
  2. git のソースをダウンロードして解凍
  3. git をインストール

作業用ディレクトリを $HOME/local/src、インストールディレクトリを $HOME/local として進めていきます。git の最新のソースは Google Code でチェックしておきます。

bash
mkdir -p $HOME/local/src
cd $HOME/local/src
wget http://git-core.googlecode.com/files/git-1.7.12.tar.gz
tar zxvf git-1.7.12.tar.gz
cd git-1.7.12
./configure --prefix=$HOME/local
gmake
gmake install

インストールしたばかりだと git にパスが通っていないのでフルパスで実行するか、仮でパスを通しておきます。

bash
export PATH=$HOME/local/bin:$PATH

git が使えるか確認。バージョンが返ってくればOK。

bash
git --version

git version 1.7.11.5

3. リモートリポジトリの作成

リモートリポジトリを作成します。リモートリポジトリのディレクトリは *.git とするそうです。ディレクトリを作成したら init で初期化します。--bare で作業用ディレクトリなしで初期化してくれます。

bash
mkdir -p git/repos.git
cd git/repos.git
git init --bare

Initialized empty Git repository in ***

中身を確認して HEADconfig などのファイルやディレクトリが作成されていれば初期化完了です。

$HOME/.cshrc の編集

さくらのレンタルサーバーはログインシェルが csh なので、そのままの状態でクライアントからプッシュすると $HOME/local/bin にパスが通っていないのでエラーになります。

bash
git-receive-pack: Command not found.
fatal: The remote end hung up unexpectedly

$HOME/.cshrc があるのでこれにパスを追加します。念の為、バックアップを作成。

bash
cp .csh .csh.bak

vi でパスを変更。git しか入れてないので一番最後に追加してます。保存したら再ログインして git にパスが通っているか確認しておきます。

bash
vi .csh

set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin $HOME/local/bin)

 

サーバーの方はこれで準備完了です。

3. クライアントのセットアップ

適当な作業用ディレクトリを作成し、初期化します。

bash
mkdir git
cd git
git init

コミット

適当にファイルを作成してコミットします。メッセージは空以外で。

bash
touch README
git add README
git commit -m 'initial commit'

リモートリポジトリの追加

リモートリポジトリを `origin` という名前で追加します。接続は SSH で行います。URL のパターンは何種類かあり、下の [1] と [2] のような書き方が出来るようです。

bash
[1] git remote add origin ssh://アカウント名@example.sakura.ne.jp/home/アカウント名/git/repos.git
[2] git remote add origin ssh://アカウント名@example.sakura.ne.jp/~/git/repos.git

scp のような書き方でもいいようです。これが一番シンプルかな?

bash
git remote add origin アカウント名@example.sakura.ne.jp:git/repos.git

詳しくは git push --help に書かれています。

プッシュ

リモートリポジトリにプッシュします。

bash
git push origin master

 

これでサーバーとクライアントでデータのやり取りが出来るようになりました。あとはファイルを更新してコミット・プッシュしていくだけです。

公開鍵の作成とハードリンクはまた今度にしよう…。

おまけ

クライアントでリモートリポジトリの設定を変更する

リモートリポジトリのパスを間違ってしまったりパスを変更したいときなどに使います。とりあえずこれだけ覚えておけばなんとかなりました。

登録されている名前と URL を確認する。

bash
git remote -v

origin の URL を変更する。

bash
git remote set-url origin 新しいURL

origin を削除する。

bash
git remote rm origin

gitk & Git Gui を使う

ローカルのリポジトリで gitk を実行し、ツールバーの「ファイル」から「Git Gui を開始」を選択すると git commitgit remote などのコマンドが GUI で出来ちゃいます。

Git Gui