INDIE INDEX

レベル:入門

Git(ギット)とは|変更履歴を分散して管理するバージョン管理の仕組み

変更履歴を分散して管理する、オープンソースのバージョン管理システム

言葉の意味

Git(ギット)は、ファイルの変更を時間の経過とともに記録し、あとから特定の版を呼び出せるようにするソフトです。オープンソースの、分散型のバージョン管理システムです。

分散型というのは、履歴の置き場所が1か所ではない、という意味です。1台のサーバーに全部の版を置く中央集権型では、サーバーが1時間止まれば、その1時間は誰も作業の記録を残せません。ディスクが壊れて控えが無ければ、履歴そのものが消えます。分散型では、各自の複製がそれぞれ完全な控えなので、サーバーが失われても、どれか1つを送り返せば元に戻ります。

ほとんどの操作が手元のファイルだけで完結します。履歴が手元のディスクにあるため、履歴の閲覧も、1か月前のファイルとの差分の計算も、サーバーに問い合わせる必要がありません。記録の取り方もほかの仕組みと違い、ファイルごとの変更の積み重ねではなく、記録のたびに基本的にそのときの全ファイルの状態のスナップショットを撮り、そのスナップショットへの参照を保存します。中身の変わっていないファイルは、前に保存した同じファイルへのリンクだけを置きます。

ファイルは、コミット済・修正済・ステージ済の3つの主要な状態を持ちます。修正済は、ファイルに変更を加えたがまだ記録に入れていない状態、ステージ済は、次の記録に入れるために、いまの版の修正したファイルに印を付けた状態、コミット済は、手元のデータベースにデータが安全に収まっている状態です。

手元の作業で使うコマンドには、次のようなものがあります。既存のプロジェクトを Git で管理し始めるときは、そのプロジェクトのディレクトリで git init を打ちます。.git という名前のサブディレクトリが作られ、リポジトリに必要なファイルがその中に格納されます。ただし、まだプロジェクト内のファイルは一切管理対象になっていません。git status は、どのファイルがどの状態にあるのかを知るために主に使うコマンドです。新しいファイルの追跡は git add で始められ、git commit は、インデックス(ステージング・エリアとも呼ばれます)の現在の内容と、変更を説明するログメッセージを持つ新しいコミットを作ります。git restore は、指定したパスのファイルを、復元元の内容で作業ツリーに書き戻します。このうち git status と git restore を実際に打った順、画面に出た行、戻す前後のゲームの動きは、gitで確かめ、戻す【AIでゲーム開発】にあります。

混同されやすい言葉

Git と GitHub は別のものです。Git は手元で動くソフトそのもので、GitHub は Git リポジトリのホスティングサービスです。多くのオープンソースプロジェクトが、Git リポジトリ以外にも、課題追跡やコードレビューなどに GitHub を利用しています。

Git とバージョン管理も分かれます。バージョン管理は仕組みの名前で、Git はその中の分散型に当たる実装の1つです。

情報源

関連ページ16

この言葉を定義している公式のページ

公式の定義

このページの内容の誤りは、問い合わせの窓口で受け付けています。