Close

Git とは何か

現在、世界で最も広く使用されている最新のバージョン管理システムは間違いなく Git です。Git は積極的にメンテナンスが行われている成熟したオープンソースプロジェクトです。元々は、Linuxのオペレーティングシステムカーネルの有名なクリエイターであるリナス・トーバルズによって 2005 年に開発されました。商業的なプロジェクトやオープンソースを含め、驚異的な数のソフトウェアプロジェクトが、バージョン管理に Git を使用しています。Git に携わった開発者は、利用可能なソフトウェア開発人材プールに十分集められており、Git は幅広いオペレーティングシステムと IDE(統合開発環境)でうまく機能しています。

分散型アーキテクチャを搭載している Git は、DVCS(分散型バージョンコントロールシステム)の一例です。CVS やサブバージョン(SVN としても知られる)などのかつて人気であったバージョン管理システムに一般的であるようにソフトウェアのフルバージョン履歴用の場所を 1 つだけ持つのではなく、Git において、すべての開発者による作業中のコードのコピーは、すべての変更の完全な履歴を含めることができるリポジトリでもあります。

分散型であるという点以外にも、Git はパフォーマンス、セキュリティ、柔軟性を念頭に置いて設計されています。

A staggering number of software projects rely on Git for version control, including commercial projects as well as open source. Developers who have worked with Git are well represented in the pool of available software development talent and it works well on a wide range of operating systems and IDEs (Integrated Development Environments).

Having a distributed architecture, Git is an example of a DVCS (hence Distributed Version Control System). Rather than have only one single place for the full version history of the software as is common in once-popular version control systems like CVS or Subversion (also known as SVN), in Git, every developer's working copy of the code is also a repository that can contain the full history of all changes.

In addition to being distributed, Git has been designed with performance, security and flexibility in mind.


パフォーマンス


他の多くの類似製品と比較すると、GIt の未加工のパフォーマンス特性は非常に強力です。新しい変更のコミット、ブランチング、マージ、過去のバージョンの比較がすべて、パフォーマンスのために最適化されています。Git 内で実装されたアルゴリズムは、実際のソースコード ファイル ツリーの共通の属性、それらが長期間にわたって通常どのように修正されるのか、どのようなアクセス パターンなのかに関する深い知識を活用します。

いくつかのバージョン管理ソフトウェアとは異なり、ファイルツリーのストレージとバージョン履歴を決定する際、Git はファイルの名前ではなく、ファイルの内容そのものに焦点を当てています。何といっても、ソースコードファイルは頻繁に名前変更、分割、再配置されます。Git のリポジトリファイルのオブジェクトフォーマットは、デルタエンコーディング(コンテンツの差分を保存)、圧縮の組み合わせを使用してディレクトリコンテンツとバージョンメタデータオブジェクトを明示的に格納します。

分散されていることにより、顕著なパフォーマンスのメリットを実現することもできます。

たとえば、開発者のアリスはソースコードを変更し、近日公開予定の 2.0 リリースに機能を追加してから記述的メッセージを使用してこれらの変更をコミットします。その後、彼女は 2 つめの機能に取り組み、これらの変更もコミットします。当然、それらはバージョン履歴内で作業の別の部分として保存されます。その後、アリスは同じソフトウェアのバージョン 1.3 ブランチに切り替え、その古いバージョンのみに影響を及ぼすバグを修正します。この作業の目的は、アリスのチームがバグ修正リリース、バージョン1.3.1 を、バージョン 2.0 の準備が整う前に出荷できるようにすることです。アリスは、その後、2.0 ブランチに戻り、2.0 の新機能で作業を続けます。これらの作業をネットワークへアクセスせずに実行できるため、高速で信頼性があります。この作業は飛行機内で行うこともできます。個別にコミットされたすべての変更をリモートリポジトリへ送信する準備が整うと、アリスは 1 つのコマンドを使用してそれらを「プッシュ」できます。

Git のロゴ
関連資料

Git チートシート

Bitbucket ロゴ
ソリューションを見る

Bitbucket Cloud での Git の使用方法についてのチュートリアルです。

セキュリティ


Git は、管理ソースコードの整合性を最優先として設計されています。ファイルのコンテンツだけでなく、ファイルとディレクトリの間、バージョン間、タグとコミットの間の真の関係など、Gitリポジトリ内のこれらすべてのオブジェクトは、SHA1 と呼ばれる暗号化された安全なハッシュアルゴリズムで保護されています。これにより、コードと変更履歴の両方が、誤って変更されたり、不正に変更されるのを防ぎ、履歴を完全に追跡可能にします。

Git を使用することで、ソースコードの本物のコンテンツ履歴があることを確認できます。

他のバージョン管理システムのいくつかは、後日の、秘密の改ざんに対して保護されません。このことが、ソフトウェア開発に依存する組織にとって、深刻な情報セキュリティの脆弱性となる可能性があります。

柔軟性


Git リポジトリの設計上の主な目的の一つは柔軟性です。Git には、さまざまな種類の非線形開発ワークフローのサポート、小規模および大規模の両方のプロジェクトでの効率性、および多くの既存システムおよびプロトコルとの互換性など、さまざまな点で柔軟性があります。

Git は(SVN とは異なり)第一級市民としてブランチングやタグ付けをサポートするように設計されており、(マージや取り消しなど)ブランチやタグに影響を与える操作(マージや取り消しなど)も変更履歴の一部として保存されます。バージョン管理ソフトウェアがすべてこのレベルの追跡を搭載している訳ではありません。

Git でのバージョン管理


Git は、現在のほとんどのソフトウェアチームに最適です。すべてのチームは同一ではなく、独自の分析を行う必要がありますが、Gitを使用したバージョン管理が他の選択肢よりも好まれる主な理由は以下のとおりです。

Git は優れている

Git はほとんどのチームや個別開発者が必要としている機能、パフォーマンス、セキュリティ、柔軟性を備えています。Git のこれらの属性については上記に詳述されています。他のほとんどの製品と並べて比較すると、多くのチームは Git が好ましいということに気付きます。

Git は事実上の標準となっている

Git は、同種の製品の中で最も広く採用されているツールです。これにより、Git が魅力的となる理由は次のとおりです。アトラシアンでは、プロジェクト ソース コードのほぼすべてが Git で管理されています。

かなりの数の開発者が既に Git の使用経験があり、大学卒業生の大部分が Git 以外の使用経験がありません。別のバージョン管理システムから Git への移行時、一部の組織は学習曲線をたどることが必要となるかもしれませんが、既存の開発者や将来の開発者の多くは Git の訓練を行う必要がありません。

また、大規模な人材プールという利点に加え、Git の優位性は、多くのサード・パーティ製のソフトウェア・ツールとサービスが既に Git と統合されているということを意味します。これには IDE や、弊社独自ツールである DVCS デスクトップ・クライアント Sourcetree、課題およびプロジェクト追跡ソフトウェアの Jira、コード・ホスティング・サービスである Bitbucket などがあります。

ソフトウェア開発ツールの価値あるスキルを構築する、経験の浅い開発者は、バージョン管理のリストに Git を含めるべきです。

Git は高品質のオープンソースプロジェクト

Git は 10 年以上にわたって確実に管理されてきた、サポートの充実したオープンソースプロジェクトです。プロジェクトのメンテナンス担当者は使いやすさと機能性を向上させ、通常のリリースでユーザーの長期的なニーズを満たすため、バランスの取れた判断力と成熟したアプローチを示してきました。オープンソースソフトウェアの品質は簡単に調べることができ、多数のビジネスがその品質に大きく依存しています。

Git は、偉大なコミュニティのサポートと膨大なユーザーベースを享受しています。ドキュメントは、書籍、チュートリアル、専用ウェブサイトを含む、優れたドキュメントが多数あります。ポッドキャストやビデオチュートリアルもあります。また、

無料で Git を使用できるため、オープンソースであるによって趣味の開発者のためのコストを下げます。オープンソースプロジェクトで使用という点で、Git は間違いなく成功したオープンソースのバージョン管理システム、SVN や CVS の前の世代の後継です。

Git に対する批判

Git に対する一般的な批判の 1 つとして、学習が難しいということがあります。Git で使用されている用語のいくつかは、初心者にとっては目新しく、他のシステムのユーザーにとっては異なる場合があります。たとえば、Git では、revert は SVN や CVS と異なる意味を持ちます。それにもかかわらず、Git は非常に優れており、そのユーザーに多くの力を提供します。この力の使用方法の学習にはある程度の時間がかかる可能性がありますが、一度学習すると、その力をチームで使用して、開発速度を上げることができます。

非分散 VCS から来たチームにとって、中央リポジトリを持つことは、失いたくない優れたことのように見えるかもしれません。ただし、Git は分散型バージョン管理システム(DVCS)として設計されていますが、Git を使用していても、ソフトウェアに対するすべての変更を保存する必要がある、公式かつ正規のリポジトリを持つことができます。Git では、各開発者のリポジトリは完全であり、「中央」サーバーの可用性やパフォーマンスによって作業を制約する必要はありません。停電時やオフラインであっても、開発者は完全なプロジェクト履歴を確認できます。Git は柔軟であるだけでなく分散しているため、使い慣れた方法で作業を進め、足りないことに気付いていないかもしれない Git の追加メリットを得ることができます。

ここまでで、バージョン管理とは何か、Git とは何で、ソフトウェアチームが Git を使用すべき理由について学習しました。さらに読み進め、組織全体で Git が提供できるメリットを発見してください。


この記事を共有する
次のトピック

おすすめコンテンツ

次のリソースをブックマークして、DevOps チームのタイプに関する詳細や、アトラシアンの DevOps についての継続的な更新をご覧ください。

一面のツールを使ってコラボレーションしている人たち

Bitbucket ブログ

DevOps のイラスト

DevOps ラーニング パス

Demo Den アトラシアン・エキスパートによる機能デモ

Bitbucket Cloud が、Atlassian Open DevOps とどのように連携するか

DevOps ニュースレター購読

Thank you for signing up