Git情報
Gitとは
Git(ギット)は、オープンソースのバージョン管理ソフトウェアです。
Gitは、Linux kernel の産みの親でもある Linus Torvalds 氏が、全世界に多数の開発者を抱える巨大プロジェクトLinux kernel のソースコードを効率良く管理するために2005年4月に開発しました。
Gitは、ソースコードなどの管理倉庫であるリポジトリが1箇所に集中していない「分散型」のバージョン管理システムです。
分散型のバージョン管理システムでは、リポジトリをインターネット上で公開すれば誰でもそのリポジトリを複製して開発に参加することができます。
開発者一人一人が自分専用の作業リポジトリを持ってそこで作業をするため、オフラインでもソフトウェアの開発が進められます。
また、履歴やブランチを参照しやすい各種GUIも無料で提供されています。
Gitは、Linux kernel の開発で培われたノウハウが凝縮された高速かつ高機能なバージョン管理システムであるだけでなく、複数の開発者の間でソースコードを管理することが多いOSSプロジェクトのニーズにマッチする仕組みとして、Ruby on RailsをはじめとするOSSプロジェクトを中心に、世界中で爆発的に使われるようになっています。
Googleトレンドでも、バージョン管理ソフトウェアの中で最も人気であることが分かります。
また、Gitを利用したソフトウェア開発プロジェクトのための共有ウェブサービスであるGitHub(ギットハブ)もOSS開発者を中心に利用が進んでいます。
Gitは、プログラムのソースコード管理に利用されることが圧倒的に多いですが、ドキュメントなどのさまざまなファイルのバージョン管理も実現できます。
主な機能
主な機能は以下のとおりです。
機能 |
詳細 |
---|---|
init |
リポジトリの作成 |
clone |
既存のリポジトリの複製を作成 |
fsck |
リポジトリの正当性チェック |
gc |
リポジトリ内の不要オブジェクト削除、最適化 |
status |
変更したファイルの表示 |
diff |
コミットとワーキングツリー間などの違いをdiff形式で表示 |
add |
インデックス領域にコミットするファイルを追加 |
commit |
リポジトリに変更点を反映 |
log |
コミットログの表示 |
branch |
ブランチの作成、削除、表示 |
reset |
直前のコミットの取り消し |
revert |
ワーキングツリーを指定したコミット時点の状態にまで戻す |
show-branch |
ブランチの作成・変更・マージの履歴を表示 |
merge |
ローカルブランチをマージする |
checkout |
ブランチの切り替え |
grep |
文字列検索 |
pull |
他のリポジトリの変更点をローカルリポジトリにマージする |
push |
公開リポジトリに自分のリポジトリの内容を送信する |
Gitのローカルオペレーション
Gitにはステージング領域(インデックス)と呼ばれるものがあります。
これはコミットを完了する前にコミットをフォーマットしてレビューできる中間領域となります。
コミット対象はステージング領域のファイルのみとなり、Gitディレクトリに管理したくないファイルがあれば、ステージしないことで管理外に指定することが可能です。
主な特徴
主な特徴は以下のとおりです。
分散型 |
開発者一人一人がリポジトリ全体のコピー(作業リポジトリ)を保有し、そのコピーに対して変更を行い、そしてその変更がOKとなったら公開サーバにその変更を反映すればよい |
---|---|
マルチOS |
Linux、Mac OS X、Solaris、Microsoft Windowsなど、主要OSをサポート |
高速 |
Gitは、当初からスピードとパフォーマンスを第一の目的に作られており、一般的な集中型のバージョン管理システムよりも数分の一から数百分の一の処理時間というベンチマークも取られているほど処理が高速 |
高機能 |
基本的な版数管理のほかに、コミットの取り消し(ロールバック)、コミットへの後からの追加、複数のコミットを一つのコミットとしてまとめられるなど、プログラミングに役立つさまざまな機能を備える |
気軽に試せる |
無料でダウンロードでき、インストール作業も簡単 |
導入実績が多い |
全世界に多数の開発者を抱える巨大プロジェクトLinux kernel のソースコード管理に使用されているほか、Ruby on Railsをはじめとする世界中の数多くのOSSプロジェクトで利用されている |
さまざまな管理方式 |
分散型バージョン管理システムでありながら、公開リポジトリへの変更履歴管理方法のワークフローがいくつか選択可能
|
コスト効果 |
Gitは高機能なバージョン管理システムでありながら、オープンソースでライセンス費用がかからないため、商用製品に比べコストを大幅に削減することが可能 |
導入事例
Git(ギット)は、世界中で多くのユーザーが利用するオープンソースのバージョン管理ソフトウェアです。
近年では、その高機能さと高速さゆえに、利用ユーザーが爆発的に増えています。
Gitのホームページでは、下記のような導入事例が掲載されています。
OSSプロジェクト
- Linux Kernel
- PostgreSQL
- Perl
- Ruby on Rails
- Qt
- Eclipse
- KDE Projects
- The X.Org project
- The GNOME Project
- Android
など
類似プロダクト
商用ソフトウェア製品では、BitKeeper、Plastic SCM、AccuRev、Perforce、オープンソースではCVS、Bazaar、Fossil、Apache Subversion、Mercurialが、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、 |
HTTP、HTTPS、 |
HTTP、SMTP、 |
独自のRPCとSMP(ストリーミング・メッセージ・プロトコル)をTCP/IP上に実装 |
アトミック変更セット(すべての変更は、再現可能なスナップショットであること) |
○ |
× |
○ |
× |
グラフィカルなチェックイン・ツール |
○ |
×(IDE経由) |
○ |
△ |
動的なブランチ機能 |
○ |
× |
○ |
× |
事前のマージ機能 |
○ |
× |
○ |
× |
正確なリネーム処理 |
○ |
× |
○ |
× |
Peer-to-peer アーキテクチャ |
○ |
× |
○ |
× |
並行開発 |
○ |
× |
○ |
× |
マルチサイト開発 |
○ |
× |
○ |
△(シミュレーションのみ) |
モバイル/オフラインでの変更機能 |
○ |
× |
○ |
× |
プリイベントトリガー |
○ |
○ |
○ |
△(限定的) |
ポストイベントトリガー |
○ |
○ |
○ |
△(限定的) |
複製リポジトリ |
○ |
× |
○ |
× |
自動整合性チェック |
○ |
× |
○ |
× |
全履歴の記録 |
○ |
× |
○ |
× |
最小限のハードウェア要件 |
○ |
× |
○ |
△(要件による) |
ユースケース
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の適用範囲でソフトウェアのコピーや配布、ソースコードの公開を原則として、ソースコードの自由な改変も認められています。
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。
関連OSS
-
サポート対象
Apache Subversion
アパッチサブバージョン。プログラムのソースコードなどを管理するバージョン管理システムの一つです。
-
GitLab
ギットラボ。Gitリポジトリ機能を中心としたオープンソースのDevOps 製品です。
-
CVS
シーブイエス。ファイルのバージョンを管理するアプリケーションソフトです。