gitリポジトリを立ててSSHで利用
以前daemonを起動してリポジトリ立てる方法について書いたけど、今回はgitのリポジトリを立てる(SSH経由) を参考にSSH経由でできるようにやってみた。
リポジトリを置くサーバのホスト名はexampleとする。
ユーザの追加
リポジトリを操作するためのgitユーザをexampleサーバに追加する。 Mac OS 10.6の場合、ユーザは dsclで追加 する。
このときシェルにgit-shell(MacPortsで入れたなら /opt/local/bin/git-shell にある)を設定する。こうすることでpush,pullのみを受け付けるようになる。
リポジトリの作成
example:/Users/gitディレクトリ配下にリポジトリを集約するreposディレクトリを作成し、今回はprojectというリポジトリを作成してみる(末尾に.gitを付けるのは慣習?)。
% cd /Users/git % sudo -u git mkdir repos % sudo -u git mkdir repos/project.git % cd repos/project.git % sudo -u git git init --bare
鍵を追加
gitユーザにSSHでログインするための鍵を追加する。
% cat ~/.ssh/id_rsa.pub > /Users/git/.ssh/authorized_keys
cloneしてみる
$ git clone git@example:repos/project.git
$ cd project
pushしてみる
masterブランチでのコミット内容をorigin(サーバ側)に適用する。
$ git push origin master
ただこのときに次のようなエラーがでるかもしれない。
$ git push -v origin master Pushing to git@example:repos/project.git To git@example:repos/project.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'git@example:repos/project.git' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.
原因はよくわかってないのであれだけど、とりあえず-fオプションをつけて再度実行すればちゃんとpushされている。
おまけ:Redmineでリポジトリを閲覧
プロジェクトの設定画面で「リポジトリ」タブを選択し、「バージョン管理システム」にgit、「Path to .git directory」に「/Users/git/repos/project.git」を設定すれば良い。