gitはソース(というかリポジトリ)落としてきたり程度には使ってましたが、
そろそろ自分のもろもろソースコードも管理して行かないということで挑戦。

バージョン管理は仕事でSubverionを使ってましたが、
乗り遅れ気味ながらgitを選びました。
ネットにつながってなくてもローカルリポジトリにコミット出来るし、
ぎっはぶも使いたいし(´・ω・`)

事前にここのサイトで予備知識を入れておくとわかりやすいかも。
参考:分散バージョン管理システムGitの使い方入門

まずはインストール。ソースから。


$ cd /tmp
$ wget http://www.kernel.org/pub/software/scm/git/git-1.7.9.6.tar.gz
$ tar zxvf git-1.7.9.6.tar.gz
$ cd git-1.7.9.6
$ ./configure
$ make
$ sudo make install

もちろんyumでもaptitudeでもインストール出来ればおk。
はい、正しくできてるか確認。

$ git --version
git version 1.7.9.6

上記のようにバージョンが表示されたらインストールされてます。

git用ユーザーの作成

$ sudo adduser git

SSH認証フォルダを作成。
gitはデフォルトだとsshでの接続になるので、
元々使っていたユーザーの公開鍵をgitユーザー反映させます。
まずディレクトリ作成とパーミッション設定。

$ sudo su git
$ cd /home/git
$ mkdir .ssh
$ chmod 700 .ssh

続いて既存のユーザーの鍵をコピる
管理者権限になれるユーザーで

$ sudo cp /home/hogehoge/.ssh/authorized_keys /home/git/.ssh/
$ sudo chown git.git /home/git/.ssh/authorized_keys

sshのログインユーザー制限してる場合

$ sudo vi /etc/ssh/sshd_config
※sshd_config内を編集
Allow Users hogehoge git

sshの設定ができたので、gitユーザーでアクセスを試す。
ログイン出来ればssh認証はOK

複数人での開発となったとき、コミッタにはSSHできないように制限。

$ sudo vi /etc/passwd
git:x:1001:1001:Git,,,:/home/git:/bin/bash
↓
git:x:1001:1001:Git,,,:/home/git:/usr/bin/git-shell

ログインシェルをGit に関する作業しかできない制限付きシェル git-shellにしてしまおうというわけ。

でわでわリモートリポジトリ作成

$ cd /home/git
$ mkdir project1.git
$ cd project1.git
$ git --bare init
Initialized empty Git repository in /home/git/project1.git

作成場所はお好みの場所で。
/var/gitとか切ってもいいと思うけど、その場合所有者をgitにするのをお忘れなく。

公開リポジトリと通常のリポジトリとbareリポジトリ ←参考サイト
“Gitの公開リポジトリは通常、管理ファイルのみを持つ「bareリポジトリ」として作成される。通常bareリポジトリでは作業ツリーの変更やコミットといった操作は行わず、ファイルのやりとりにのみ使用する。また、慣例としてbareリポジトリとして使用するディレクトリには「.git」という拡張子が付けられる。
bareリポジトリは、「–bare」オプションを付けてでgit initを実行することで作成できる。”

とのことなので、ローカルリポジトリを作る際は”git init”で良いわけですね。

ではローカル側にリモートリポジトリの設定を追加。

 
$ git remote add origin ssh://git@ホストネームorIP:SSHポート/home/git/project1.git
 

“origin”はリモートリポジトリの名前。既に使われていたりするとぶつかるので、
任意に変えて下さい。
参考:git-remoteについて

 
$ git push origin  master
 

これでエラーが出なければ完了。

リモートリポジトリへの接続はこれでOKなので、
ローカルにもリポジトリを作ってpush,pullをいろいろしてみる。

差分みたり、マージしたり、色々と面倒なのはここからなんでしょ?(´・ω・`)

参考:WEBデザインTips