ソフトウェアの開発プロジェクトにおいては、ソースコードに対して複数のチームメンバーが、随時追加や変更を加えていきます。
これらの変更は、常にシーケンシャルに行われるわけではありません。新機能の追加、既存機能の改修、不具合の修正などが複雑にからみ合っているのが一般的です。
そのためソースコードに対して無秩序に変更を加えてしまうと、
- 直したはずのバグが直っていない
- 誰かが追加したコードを上書きしてしまった
- 複数の修正同士が衝突してしまった
といったトラブルが起きがちです。またどのコードが最新の状態なのかの把握も困難となり、結果として間違ったバージョンをデプロイしてしまうことも考えられます。
そこで、データに対して「誰が」「いつ」「どのような」変更を行ったかを、追跡管理するシステムが作られました。こうしたシステムを「バージョン管理システム(VCS)」と呼びます。
VCSには様々な実装が存在しますが、現在オープンソースソフトウェア業界を中心に、世界中で最も広く利用されているのがGit(ギット)です。GitはもともとLinuxカーネルの開発をサポートするために作られたVCSということもあり、多人数による大規模な開発にも向いています。
チームで開発作業を始めるためには、実際にソースコードを共有するためのサーバーが必要となります。その点Gitには、GitHubやGitLabといった、無料で利用できるソースコードホスティングサービスが存在します。こうしたエコシステムが充実している点も、Gitを選択する強い動機となります。