CentOS 6.4に、最新版Git環境を構築してみた。
GitHubも良いのだけど、公開したくないコードもあるの「社内向けGitサーバ」もあれば便利かな~と思ってインスト!
※専門用語その1 Git
Gitとは、バージョン管理のシステム。主にソースコードファイルをどう変更したかを管理する。
基本的にはテキストのみ。画像や音楽なども管理はできるが差分がバイナリ比較になるので、どう変化したか分からない。
そういった意味では、エクセルやワードのバージョン管理も出来ない。
※専門用語その2 GitHub
GitをWebサーバ上に公開して、ブラウザから誰でも使えるようにしたWebサービス。通称、開発者向けSNS
基本的に無料だが、有料にすると以下のような事が出来る。
無料=必ず公開。レポジトリ数も5件まで
有料=非公開設定が出来る。レポジトリ数にも制限なし!
Gitはフリーなので、自分でサーバを用意して、自分専用に出来たりします。
Linuxには、わりと最初からインストールされていますが、バージョンが古かったりするので最新に更新する。
1 2 3 4 5 6 |
$ cat /etc/redhat-release CentOS release 6.4 (Final) $ arch x86_64 $ git --version git version 1.7.1 |
参照URL:
http://qiita.com/sirone/items/2e233ab9697a030f1335
1 2 3 4 5 6 7 |
$ sudo yum remove git $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker $ wget https://www.kernel.org/pub/software/scm/git/git-2.3.2.tar.gz $ tar -zxf git-2.3.2.tar.gz $ cd git-2.3.2 $ make prefix=/usr/local all $ make prefix=/usr/local install |
そのままだと、パス無しで使えなかったので、リンクを貼っておく
1 2 3 4 5 6 7 |
$ git --version -bash: /usr/bin/git: そのようなファイルやディレクトリはありません $ which git /usr/local/bin/git $ ln -s /usr/local/bin/git /usr/bin/git $ git --version git version 2.3.2 |
とりあえずインストールは終わったので、設定を行います。
参照URL:
※ xinetdはインターネット接続を管理するデーモン
1 2 3 4 |
$ yum install git git-deamon git-all xinetd $ chkconfig xinetd on $ /etc/init.d/xinetd start $ vi /etc/xinetd.d/git-daemon |
設定ファイルは、以下のようにする(gitプロトコルで接続してきたら、gitサーバにつなげて!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# default: off # description: The git daemon allows git repositories to be exported using \ # the git:// protocol. service git { disable = no socket_type = stream wait = no user = nobody server = /usr/libexec/git-core/git-daemon server_args = --base-path=/var/lib/git --export-all --user-path=public_git --syslog --inetd --verbose log_on_failure += USERID } |
再起動する
1 |
$ /etc/rc.d/init.d/xinetd restart |
※専門用語その3 レポジトリ
レポジトリとは貯蔵庫の意味で、gitでは変更情報を格納するための情報群(とは言っても、ただのファイルとフォルダです)
クライアント側からはレポジトリ名で、サーバ側では指定フォルダで管理されている。
ユーザがファイル等を変更後、commitすると変更履歴が保存される。
レポジトリ作成
1 2 3 4 5 6 |
$ cd /var/lib/git/ $ mkdir public_git $ mkdir public_git/test.git $ cd public_git/test.git $ git --bare init --shared Initialized empty shared Git repository in /var/lib/git/public_git/test.git/ |
とりあえずGitサーバ側の設定は、これで終わり。次はGitクライアント側。
適当なフォルダを作って、gitで管理したいファイル群を作る。
面倒なので、gitサーバと同じ実行してみた。
1 2 3 4 |
$ cd ~/src $ mkdir test $ cd test $ echo "Git Test." > test.txt |
git initコマンドは、カレントフォルダ以下をgitで管理するよ!っていうコマンド
1 |
$ git init |
git addコマンドは、バージョン管理したフィアルを選択する。カンマ(.)にすれば全て選択となる。
git commitコマンドは、gitにおけるセーブみたいなモノ。バージョン番号がふられる。履歴用のコメントが必須!
1 2 |
$ git add test.txt $ git commit -m "First Commit" |
git remote addコマンドは、リモートリポジトリ(gitサーバ名)の登録。同じサーバ内ならフルパスを書けば大丈夫!
ネット経由なら、サーバ名とアカウント情報が必要。
1 |
$ git remote add test /var/lib/git/public_git/test.git |
後は、通常通りgit pushコマンド(gitサーバへのアップロード)をたたけば、この状態が保存されます。
最後のmasterは、デフォルトのブランチ名(gitでは履歴を分岐できる。例えば現行ソフトの履歴・次世代ソフトの履歴を平行して管理できる)
1 |
$ git push test master |
保存履歴をみたい時は、以下のようにすれば表示される。
1 |
$ git log |
一つ前のバージョンとの差分を比較したい時には、以下のコマンド
頭にプラス記号があるのが追加された行
1 2 3 4 5 6 7 8 9 10 |
$ git diff HEAD^ diff --git a/test.txt b/test.txt index ae6c19b..42a3c6c 100644 --- a/test.txt +++ b/test.txt @@ -1 +1,4 @@ Git Test +alt +bbb +ccc |
gitには色々なコメンドや概念があるので、色々と調べてみて下さい。
とりあえず、コマンドラインでgitだけをタイプすると、ヘルプが見られます。