分散バージョン管理システム「Git」--その使用法をご紹介

文:Vincent Danen(TechRepublic) 翻訳校正:村上雅章・野崎裕子
2009-12-02 13:11:01
  • このエントリーをはてなブックマークに追加

 分散バージョン管理システム「Git」は、SubversionやCVSのように中央サーバを必要としないため、より柔軟な運用が可能になっている。本記事では、Gitのこういった特徴をいくつか紹介する。

 Gitは数多くの企業やプロジェクトの間で近頃急速に人気が高まってきている分散バージョン管理システムである。GitHubサイトを見てもらえれば、たくさんのプロジェクトがこのサイトを利用していることがわかるはずだ。

 数多くのプロジェクトが、CVSやSubversionのような「従来型の」バージョン管理システムから、柔軟性の高さと機能の豊富さに惹かれてGitに鞍替えしてきている。

 Gitには「分散型である」という大きな特徴がある。これはつまり中央サーバが不要であるということを意味している。GitはSubversionとは異なり、オンラインであるかどうかにかかわらずリポジトリにコミットすることができる。つまりSubversionでは、飛行機などで移動しながらプログラミングを行っている場合、変更をコミットしたくなったとしても、中央リポジトリにアクセスできるようになるまで待たなければならないのである。一方Gitでは、マスターリポジトリからユーザー個人の環境内にリポジトリの複製を行っておくことになるため、インターネット接続が可能であるかどうかにかかわらず、好きな時にコミットできるわけである。そして、マスターリポジトリへの変更の反映は、接続が可能になった際にマージというかたちで行われる。

 Subversionなどのバージョン管理システムを使った経験があるのであれば、最初は少し違和感を覚えるかもしれないが、すぐにGitの使い方のコツをつかめるはずだ。

 まず最初に、GitHubからプロジェクトを複製することになる。以下の例では、RailsのGitリポジトリを複製している。

$ git config --global user.name "ユーザー名"

$ git config --global user.email "ユーザーの電子メールアドレス"

$ git clone git://github.com/rails/rails.git

Initialized empty Git repository in /home/wizard/git/rails/.git/

 ここではいくつかのことを行っている。まず、ユーザー名とユーザーの電子メールアドレスを設定している。次に、rails.gitリポジトリを複製している。なお、複製したものはローカル環境内の./rails/ディレクトリに格納される。これがソースツリーとなり、リポジトリともなる。

 これで通常の開発作業を該当ディレクトリで行えるようになったわけである。過去に行われた変更を確認したい場合、「git log」コマンドでコミットログを出力することができる。また、特定のファイルのログを出力したい場合、「git log [ファイル名]」コマンドを用いることで、該当ファイルのコミットメッセージを出力することができる。

 あるファイルに変更を加えた後で、リポジトリにあるファイルの内容との差異をdiff形式で確認したい場合、「git diff」コマンドを用いることになる。出力結果は「svn diff」コマンドや「cvs diff -uN」コマンドの実行結果と似た形式となる。また、ファイルを追加するには「git add」コマンドを用いる。これらのコマンドの使用例は以下のようになる。

$ echo "test file" >test.txt

$ git add test.txt

$ git commit -m "test file"

[master 1e5d1bb] test file

1 files changed, 1 insertions(+), 0 deletions(-)

create mode 100644 test.txt

$ echo "add another line" >>test.txt

$ git diff test.txt

diff --git a/test.txt b/test.txt

index 16b14f5..3d87308 100644

--- a/test.txt

+++ b/test.txt

@@ -1 +1,2 @@

test file

+add another line

 上記のコマンドを実行することで、複製したリポジトリにファイルを追加し、そのファイルをコミットし、該当ファイルの内容を変更した後で、変更内容をdiff形式で出力することができる。こういった作業のいずれをとっても、マスターリポジトリの内容には一切変更を加えていない。つまり、複製したリポジトリの内容を変更しているだけというわけである。このため、これらの操作は飛行機の中や、自動車の後部座席、森の奥深くにあるログハウスで行うことができるわけである:すべての変更はローカルのリポジトリに対して行われ、そのリポジトリ上でブランチの作成やバックアウト、差分出力などの操作が行えるのだ。一方、こういったことをSubversionやその他のバージョン管理システムで行おうとすれば、インターネットに接続する必要がある。

  • 新着記事
  • 特集
  • ブログ
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]