トップ OSS紹介 Git

Git

サポート対象

NRIのOpenStandiaが提供するGit最新情報

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は、当初からスピードとパフォーマンスを第一の目的に作られており、一般的な集中型のバージョン管理システムよりも数分の一から数百分の一の処理時間というベンチマークも取られているほど処理が高速

高機能

基本的な版数管理のほかに、コミットの取り消し(ロールバック)、コミットへの後からの追加、複数のコミットを一つのコミットとしてまとめられるなど、プログラミングに役立つさまざまな機能を備える
集中型のバージョン管理システムであるSubversionの利用ユーザーが、オフラインで作業を行う必要のある場合に、SubversionのリポジトリとGitのローカルリポジトリの間で双方向操作を可能にする「git-svn」というコマンドなども用意されている

気軽に試せる

無料でダウンロードでき、インストール作業も簡単
また、Gitを利用したソフトウェア開発プロジェクトのための共有ウェブサービス GitHub(ギットハブ)もIDを公開すれば無料で利用できる

導入実績が多い

全世界に多数の開発者を抱える巨大プロジェクトLinux kernel のソースコード管理に使用されているほか、Ruby on Railsをはじめとする世界中の数多くのOSSプロジェクトで利用されている
また、Facebook社やAmazonなどをはじめとする大手ネット関連企業での利用も多い

さまざまな管理方式

分散型バージョン管理システムでありながら、公開リポジトリへの変更履歴管理方法のワークフローがいくつか選択可能

  • 集中型ワークフロー(従来のSubversionタイプ)
  • 統合マネージャー型ワークフロー:1人の管理者がいったん全変更を管理
  • 管理者&副管理者型ワークフロー:複数の管理者&副管理者がさまざまな内容やレベルで変更履歴を管理

コスト効果

Gitは高機能なバージョン管理システムでありながら、オープンソースでライセンス費用がかからないため、商用製品に比べコストを大幅に削減することが可能

導入事例

Git(ギット)は、世界中で多くのユーザーが利用するオープンソースのバージョン管理ソフトウェアです。
近年では、その高機能さと高速さゆえに、利用ユーザーが爆発的に増えています。

Gitのホームページでは、下記のような導入事例が掲載されています。

OSSプロジェクト

など

類似プロダクト

商用ソフトウェア製品では、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、
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は様々なプラットフォームに対応しており、小規模な開発からリモート拠点による大規模な開発まで様々なユースケースに対応可能です。

動作環境

前提となる動作環境は、以下のとおりです。(バージョン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
    サポート対象

    Apache Subversion

    アパッチサブバージョン。プログラムのソースコードなどを管理するバージョン管理システムの一つです。

  • GitLab

    GitLab

    ギットラボ。Gitリポジトリ機能を中心としたオープンソースのDevOps 製品です。

  • CVS

    CVS

    シーブイエス。ファイルのバージョンを管理するアプリケーションソフトです。

オープンソースに関するさまざまな課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。