ちなみに

火曜日の空は僕を押しつぶした。

Let's make a remote repository!

研究室の余っているPCをLAN向けのサーバにするためにごにょごにょ。Debianの入れ直しとかしてました。
なぜか5回に一回くらいしか起動しなくていらいら。なぜかSambaがうまく動かなくてむきー。(Sambaは未だに動かない。もう入れなくても良いと思っているけど、大人の事情というやつだ)

で、gitのリポジトリも作ってみた。途中、Debianさんのgit-coreパッケージのバージョンがひくいのでまたつまってしまった。進歩してない。


さて、方法なんだけど、個人的に使う場合はvery簡単。

今回は'gitmoe'というユーザ専用の'/home/gitmoe/my_repos.git'というレポジトリを作ります。
gitのバージョンは1.5系列のみです。1.4系だとダメです。gitのインターフェースが大幅に変わってます。(例:[1.5.*] git init -> [1.4.*] git init-db)
ちなみに、プロンプトはわかりやすいように、[remote]、[local]をつけています。リモートホストのホスト名を仮にgitmoe.example.netとします。

まずリモートで、

[remote] $ GIT_DIR=/home/gitmoe/my_repos.git git init

はい。これでリモート専用のリポジトリの完成です。3分クッキングより簡単。別に完成品が用意されているわけでもありません。

これはgithubでリポジトリを作った状態と同じです。あとはローカルのリポジトリを作ってpushしたらOKです。githubと同じですね。
やりとりはひとまずssh越しにすることにします。

[local] $ mkdir my_repos
[local] $ cd my_repos
[local] $ git init
[local] $ git add .
[local] $ git commit -a -m 'initial commit'
[local] $ git remote add origin ssh://gitmoe@gitmoe.example.net/home/gitmoe/my_repos.git
[local] $ git push origin master

という具合にpushできます。次は研究室別館(そんなものがあるのか。うらやましすぎる!)に置いてあるlocal2からcloneして作業します。

[local2] $ git clone ssh://gitmoe@gitmoe.example.net/home/gitmoe/my_repos.git
[local2] $ cd my_repos
[local2] $ vim ultra_excellent_code.rb
[local2] $ git add ultra_excellent_code.rb
[local2] $ git commit ultra_excellent_code.rb -m 'write ultra excellent code'
[local2] $ git push

別館のクーラーが故障で動かなくなったので、本館に戻ってきました。

[local] $ cd my_repos
[local] $ git pull
[local] $ ls
ultra_excellent_code.rb
[local] $ vim ultra_excellent_code.rb
[local] $ git commit -a -m 'fix excellent bug'
[local] $ git push

と言うわけで今日はもう遅いので、明日は他のメンバーと共同で使えるリポジトリを作るぞと心に決めてgitmoeさんは帰宅したのでありました。


以上。すべて手打ちなので間違ってたり、タイプミスがあるかもしれません。雰囲気を掴んでいただければと思います。

まとめ

  • GIT_DIR=[リモートリポジトリのパス。多分末尾に'.git'が必要。いらないかも] git init
  • git remote add [リモートリポジトリの名前] [リモートリポジトリのアドレス。ssh:// or git:// or ...]
  • man嫁

参考文献

Software Design 2008 4月号 第2特集:Git 徹底活用ガイド