Gitのインストール

概要

Gitをインストールし、共有リポジトリを作成してみます。GitはLinus Benedict TorvaldsによってLinuxソースコードを管理するために作られた分散型バージョン管理システムです。



構成

CentOS 5.5 (Final)
Git 1.7.4.rc2



インストール

yumパッケージでインストールする場合

リポジトリの優先順位付けにyum-prioritiesを使っています。ここでは優先順位を無視してすべてのリポジトリから最新のパッケージを探させるため、--disableplugin=prioritiesを指定しています。

# yum install git --disableplugin=priorities
...
==================================================================================================
 Package              Arch               Version                       Repository            Size
==================================================================================================
Installing:
 git                  x86_64             1.7.6-1.el5.rf                rpmforge             6.5 M
Installing for dependencies:
 perl-DBI             x86_64             1.52-2.el5                    base                 600 k
 perl-Git             x86_64             1.7.6-1.el5.rf                rpmforge              24 k

Transaction Summary
==================================================================================================
Install       3 Package(s)
Upgrade       0 Package(s)


ソースコードからインストールする場合

最新のソースコードGitからダウンロードできます。

# cd /usr/local/src
# wget http://www.kernel.org/pub/software/scm/git/git-1.7.4.rc2.tar.gz
# tar zxvf git-1.7.4.rc2.tar.gz
# cd git-1.7.4.rc2
# ./configure
# make
# make install


動作確認

バージョンを表示してみます。

# git --version
git version 1.7.1

ヘルプを表示してみます。

# git --help



共有リポジトリの作成

初めにサーバー側で空の共有リポジトリを作成します。

$ sudo mkdir /var/git/myapp.git
$ cd /var/git/myapp.git
$ sudo git init --bare --shared=true
$ sudo chown -R root:tetsuyai /var/git/myapp.git

次にクライアント側で初期登録を行います。

$ git init
$ git remote add origin git+ssh://mydomain.com/var/git/myapp.git
$ git add .
$ git commit -m "initial import"
$ git push origin master

初期登録が終わるとgit cloneできるようになります。空の共有リポジトリをcloneしようとするとエラーになります。

$ git clone git+ssh://mydomain.com/var/git/myapp.git
fatal: no matching remote head

リモートリポジトリの詳細を確認してみます。

$ git remote show origin
* remote origin
Fetch URL: git+ssh://mydomain.com/var/git/myapp.git
Push URL: git+ssh://mydomain.com/var/git/myapp.git
HEAD branch: master
Remote branch:
master tracked
Local ref configured for 'git push':
master pushes to master (up to date)