Gitの概要
Git(ギット)は、オープンソースのバージョン管理ソフトウェアです。
Gitは、Linux kernel の産みの親でもある Linus Torvalds 氏が、全世界に多数の開発者を抱える巨大プロジェクトLinux kernel のソースコードを効率良く管理するために2005年4月に開発しました。
Gitは、ソースコードなどの管理倉庫であるリポジトリが1箇所に集中していない「分散型」のバージョン管理システムです。
分散型のバージョン管理システムでは、リポジトリをインターネット上で公開すれば誰でもそのリポジトリを複製して開発に参加することができます。
開発者一人一人が自分専用の作業リポジトリを持ってそこで作業をするため、オフラインでもソフトウェアの開発が進められます。
また、履歴やブランチを参照しやすい各種GUIも無料で提供されています。
Gitは、Linux kernel の開発で培われたノウハウが凝縮された高速かつ高機能なバージョン管理システムであるだけでなく、複数の開発者の間でソースコードを管理することが多いOSSプロジェクトのニーズにマッチする仕組みとして、Ruby on RailsをはじめとするOSSプロジェクトを中心に、世界中で爆発的に使われるようになっています。
Googleトレンドでも、バージョン管理ソフトウェアの中で最も人気であることが分かります。
■日本での人気度の動向(Git、Apache Subversion、Mercurial、Darcs)
■世界での人気度の動向(Git、Apache Subversion、Mercurial、Darcs)
また、Gitを利用したソフトウェア開発プロジェクトのための共有ウェブサービスであるGitHub(ギットハブ)もOSS開発者を中心に利用が進んでいます。
Gitは、プログラムのソースコード管理に利用されることが圧倒的に多いですが、ドキュメントなどのさまざまなファイルのバージョン管理も実現できます。
Gitの主な機能
主な機能は以下のとおりです。
機能 | 詳細 |
---|---|
init | リポジトリの作成 |
clone | 既存のリポジトリの複製を作成 |
fsck | リポジトリの正当性チェック |
gc | リポジトリ内の不要オブジェクト削除、最適化 |
status | 変更したファイルの表示 |
diff | コミットとワーキングツリー間などの違いをdiff形式で表示 |
add | インデックス領域にコミットするファイルを追加 |
commit | リポジトリに変更点を反映 |
log | コミットログの表示 |
branch | ブランチの作成、削除、表示 |
reset | 直前のコミットの取り消し |
revert | ワーキングツリーを指定したコミット時点の状態にまで戻す |
show-branch | ブランチの作成・変更・マージの履歴を表示 |
merge | ローカルブランチをマージする |
checkout | ブランチの切り替え |
grep | 文字列検索 |
pull | 他のリポジトリの変更点をローカルリポジトリにマージする |
push | 公開リポジトリに自分のリポジトリの内容を送信する |
■Gitのローカルオペレーション
Gitにはステージング領域(インデックス)と呼ばれるものがあります。
これはコミットを完了する前にコミットをフォーマットしてレビューできる中間領域となります。
コミット対象はステージング領域のファイルのみとなり、Gitディレクトリに管理したくないファイルがあれば、ステージしないことで管理外に指定することが可能です。

Gitの主な特徴
主な特徴は以下のとおりです。
分散型 | 開発者一人一人がリポジトリ全体のコピー(作業リポジトリ)を保有し、そのコピーに対して変更を行い、そしてその変更がOKとなったら公開サーバにその変更を反映すればよい そのため、開発者が自分の作業リポジトリでソースコードを書き換えるたびにサーバに接続することなくオフラインでも変更履歴を管理でき、きめ細かい変更とその共有がしやすい |
---|---|
マルチOS | Linux、Mac OS X、Solaris、Microsoft Windowsなど、主要OSをサポート |
高速 | Gitは、当初からスピードとパフォーマンスを第一の目的に作られており、一般的な集中型のバージョン管理システムよりも数分の一から数百分の一の処理時間というベンチマークも取られているほど処理が高速 |
高機能 | 基本的な版数管理のほかに、コミットの取り消し(ロールバック)、コミットへの後からの追加、複数のコミットを一つのコミットとしてまとめられるなど、プログラミングに役立つさまざまな機能を備える 集中型のバージョン管理システムであるSubversionの利用ユーザーが、オフラインで作業を行う必要のある場合に、SubversionのリポジトリとGitのローカルリポジトリの間で双方向操作を可能にする「git-svn」というコマンドなども用意されている |
気軽に試せる | 無料でダウンロードでき、インストール作業も簡単 また、Gitを利用したソフトウェア開発プロジェクトのための共有ウェブサービス GitHub(ギットハブ)もIDを公開すれば無料で利用できる |
導入実績が多い | 全世界に多数の開発者を抱える巨大プロジェクトLinux kernel のソースコード管理に使用されているほか、Ruby on Railsをはじめとする世界中の数多くのOSSプロジェクトで利用されている また、Facebook社やAmazonなどをはじめとする大手ネット関連企業での利用も多い |
さまざまな管理方式 | 分散型バージョン管理システムでありながら、公開リポジトリへの変更履歴管理方法のワークフローがいくつか選択可能 ・集中型ワークフロー(従来のSubversionタイプ) ・統合マネージャー型ワークフロー:1人の管理者がいったん全変更を管理 ・管理者&副管理者型ワークフロー:複数の管理者&副管理者がさまざまな内容やレベルで変更履歴を管理 |
コスト効果 | Gitは高機能なバージョン管理システムでありながら、オープンソースでライセンス費用がかからないため、商用製品に比べコストを大幅に削減することが可能 |
Gitと同様の機能を提供する商用製品およびOSS
商用ソフトウェア製品では、BitKeeper、Plastic SCM、AccuRev、Perforce、オープンソースではCVS、Bazaar、Fossil、Apache Subversion、Mercurialが、Gitと同様の機能を提供しています。
Gitの商用製品との機能比較
商用製品との機能等の比較は以下のとおりです。
機能 | Git | Apache Subversion | 商用製品A | 商用製品B |
---|---|---|---|---|
管理方法 | 分散型 | 集中型 | 分散型 | 集中型 |
プラットフォーム | Linux、Solaris、Mac OS X、Microsoft Windows | AIX、Centos、Debian、Fedora、FreeBSD、HP-UX、NetBSD、OpenBSD、Mac OS X、Red Hat Linux、Solaris、SUSE Linux、Ubuntu、Microsoft Windows | AIX、FreeBSD、HPUX、Linux、MacOS X、NetBSD、OpenBSD、Solaris、IRIX、SCO OpenServer、Microsoft Windows | Linux、UNIX、Mac OS X、Microsoft Windows |
クライアント | Linux、Mac、Microsoft Windowsほか | Linux、Mac、Microsoft Windowsほか | Linux、Mac、Microsoft Windowsほか | Linux、Mac、Microsoft Windowsほか |
プロトコル | HTTP、HTTPS、 FTP、rsync、 file://、 ssh://、 git://、WebDAV |
HTTP、HTTPS、 file://、ssh://、 svn://、svn+ssh:// |
HTTP、SMTP、 file://、ssh://、 rsh |
独自のRPCとSMP(ストリーミング・メッセージ・プロトコル)をTCP/IP上に実装 |
アトミック変更セット(すべての変更は、再現可能なスナップショットであること) | ○ | × | ○ | × |
グラフィカルなチェックイン・ツール | ○ | ×(IDE経由) | ○ | △ |
動的なブランチ機能 | ○ | × | ○ | × |
事前のマージ機能 | ○ | × | ○ | × |
正確なリネーム処理 | ○ | × | ○ | × |
Peer-to-peer アーキテクチャ | ○ | × | ○ | × |
並行開発 | ○ | × | ○ | × |
マルチサイト開発 | ○ | × | ○ | △(シミュレーションのみ) |
モバイル/オフラインでの変更機能 | ○ | × | ○ | × |
プリイベントトリガー | ○ | ○ | ○ | △(限定的) |
ポストイベントトリガー | ○ | ○ | ○ | △(限定的) |
複製リポジトリ | ○ | × | ○ | × |
自動整合性チェック | ○ | × | ○ | × |
全履歴の記録 | ○ | × | ○ | × |
最小限のハードウェア要件 | ○ | × | ○ | △(要件による) |
Gitのユースケース
Gitは様々なプラットフォームに対応しており、小規模な開発からリモート拠点による大規模な開発まで様々なユースケースに対応可能です。
Gitの動作環境
前提となる動作環境は、以下のとおりです。(バージョン2.22.0の場合)
サーバ
- OS
・Linux
・Solaris
・Microsoft Windows
・Mac OS X
- GUI
・Linux
・Microsoft Windows
・Mac OS X
※バージョンによって異なりますので、詳細はお問い合わせください。
Gitのライセンス
Gitのライセンスは、GPLv2(GNU General Public License v2となっています。
GPLv2の適用範囲でソフトウェアのコピーや配布、ソースコードの公開を原則として、ソースコードの自由な改変も認められています。
Gitのダウンロード
Gitのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。