CentOS6にGitをインストールと初期設定

yumでインストールしてみる

CentOS6にGitをインストールしてみました。CentOS6.5にyumでインストールするとgit version 1.7という古め。流石に古すぎるのでバージョンアップする方法まで。本家はここで参照
# yum -y install git
で普通に入ります。バージョンの確認をしてみると
# git --version
git version 1.7.0
ということになっていておそろしや。なのでせっかく入れたんだけど、削除して新しいバージョンのものを入れます。
# yum remove git
これであっさり消えます。
勿論1.7で充分という場合は、このまま使っても大して問題なかったりします。

CentOSにgit2.0インストール

wgetして1番新しいの引っ張ってきます。2014-08-14現在で、2.0.4だったのでそれをwgetします。最新版は、
https://www.kernel.org/pub/software/scm/git/
から確認してみてください。
作業は/usr/local/srcぐらいでやればいいかなと。
# cd /usr/local/src/
# wget https://www.kernel.org/pub/software/scm/git/git-2.0.4.tar.gz
# tar xf git-2.0.4.tar.gz
# ./configure prefix=/usr/local/
# make prefix=/usr/local all
# make prefix=/usr/local/git install
# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
# source /etc/bashrc

makeにやたらと時間かかりますが、これでインストールできちゃう。パスのエクスポートはやってもやらなくてもいいのですが、後々いろいろ便利かもです。# git --versionしたら2.0.4と出てくれば完了です。

リポジトリの作成

ファイルを管理するリポジトリの作成をします。リポジトリがないとGitが使えないので、最初にリポジトリを作成してaddしたりpullしたりcommitしたりいろいろやります。Gitの基本操作はここがいいです。だいたいみんな最初はさる以下。
基本的な操作は、ホームディレクトリ内でユーザーの基本情報(名前とメール)登録、リポジトリにするディレクトリの作成(またはもうすでにある場合には移動)をしてinit、statusを確認してみて、なんかファイルを作成したり更新したりしてみて、addしてindexにあげて、commitして、pullします。
ここでは仮に、/home/user/wwwをホームディレクトリ(リポジトリ)として進めます。リポジトリという概念に関してはちょっとめんどうなので割愛。

1. ユーザー設定 とりあえずユーザー設定します。
$ cd /home/user
$ git config --global user.name "omnioo"
$ git config --global user.email "omnioo@example.com"

これをやると、ホームディレクトリ(/home/user/.gitconfig )内にユーザー情報が書き込まれます。直接エディタで編集してもいいです。
また、これやるとカラー表示できてうれしい。
$ git config --global color.ui auto

2. リポジトリを作成する
$ cd /home/user/www
$ git init
Initialized empty Git repository in /home/user/www/.git/

これでローカルリポジトリ(ローカルディレクトリ)作成完了になります。

3. リモートリポジトリを作成する
私はBitbucket使っています。Githubを使っている人も多いかと思うけど、Bitbucketはプライベートリポジトリをもてる上にチーム作業もできるので結構便利です。SNS的にグローバルに交流しながらオープンソースを開発してゆくならGithubがいいです。ここではBitbucketを使ってリモートリポジトリを作成します。細かいところはちょっと割愛。リモートリポジトリはたいていの場合、httsかsshでaddできるかと思います。どっちでもいいです。
$ git remote add origin https://user@bitbucket.org/user/repo.git
味気ないですが、これで終了。そんで1番最初のイニシャルコミットというやつをやります。これはローカルリポジトリとリモートリポジトリを同期してその後の作業の差分を抽出するためのデータベース作りみたいなもんです。最初のcommit & pushなのでローカルとリモートは全く同じものになります。

4. インデックスにあげる
commitする前にコミットするファイルをインデックス化します。余計な手続きのような気がしないでもありませんが、確認という意味w含めてもこれは結構便利なものです。さてここでは最初のコミットになるのでインデックスにあげるファイルは全部です。なので、
$ git add .
ここでstatusを確認すると、new fileというのが出てきます。これがコミットするファイルパスになります。

5. コミットする
インデックスのファイルを確認したらリモートリポジトリにcommitします。コミットは必ずコメントをつけないと駄目です。コミットするリポジトリが同期されます。
$ git commit -m "my first commit"
こんな感じで終了。statusを確認するとnewファイルが消えて静かな感じになっている筈です。また
$ git log
でログを確認すると、commitされたことが記録されています。

6. プッシュする。
$ git push origin master
ここではじめてリポジトリが完全に同期されます。これで完了。

使っているうちに本当に便利なものだなぁと実感できるのがGitなんですが、じわっとくるだけにコマンドのひとつひとつの意味を概念的に理解するのは開発を相当やっている人じゃないと無理な感じです。ファイルアップロードしたらシステム停止!しかも誰がいつアップロードしたのかわかんない!とかの地獄のハプニングや数日間の作業が全部誰かに上書きされた!とかいう経験のある人には神に近い存在。
例えばcommitというコマンドはローカルリポジトリ内での作業で簡潔していて、pushするまではまだまだ大丈夫なんです。また、branchやcronというものが更に便利で、開発者として余計なこと考えなくてもいいんですよ。これ重要です。
で、ここまでやったら、具体的な使い方をどんどん書いてゆこうと思います。