
ソフトウェアやシステムの開発のバージョン管理で特に人気のGitについて初心者が理解できるよう解説します。
Gitとは
Gitを理解するために、まずはバージョン管理についての理解が必要です。
開発は非常に多くのプログラムファイルによって進みます。開発によって様々ですが多くの場合は長期間・複数人でおこなわれるので、”誰が”、”いつ”、”なんの目的で”プログラムを書いたかをまとめておくことが重要です。
「制作物.xml」「制作物_修正版.xml」のようにファイルを分ける管理方法もバージョン管理法のひとつですが、開発の場合のほとんどはファイル名前を変える方法は使用できませんし、先の”誰が”、”いつ”、”なんの目的で”も不明瞭です。
そこでバージョン管理ツールのGitが活躍します。gitで進捗を保存(コミットと言います。)すると”修正者”、”修正理由”、”修正したファイルの内容”が日時とともに履歴として残ります。
Gitは分散型バージョン管理システムに分類され、これは特に複数人での開発で便利なシステムです。
分散型バージョン管理システム
主にバージョン管理システムは、「中央集中型」と「分散型」があります。違いはバージョンの履歴データをどこで管理しているかです。
基本的な開発ではバージョン履歴をバックアップしているデータサーバーがあります。Gitと同じタイミングで見る機会の多いGitHubやGitLabなどがそのデータサーバーで、そこにバックアップされている最新のファイルをダウンロードして変更があれば再度バックアップを更新することで開発が進みます。
Gitで採用されている分散型バージョン管理システムでは、このバージョン履歴をデータサーバーだけでなくローカル(開発者のPC)にも保存します。
これによりサーバーにアクセスすることなくバージョン履歴を確認することができます。サーバー上の最新バージョンの取り込み時まずサーバーにアクセスし、更新はローカルで行います。サーバーへ反映させるタイミングで再度サーバーにアクセスします。
バージョン管理システムではバージョンの分岐(ブランチと言います。)ができるのが一般的で、同時進行で別のプロジェクトが動くときによく利用されます。分散型は中央集中型よりもバージョンの分岐や結合が柔軟に容易であるとされています。
Git以外のバージョン管理システム
中央集中型のバージョン管理システムとの比較から予想できる通り、Gitの他にも数多くのバージョン管理システムがあります。
中央集中型のバージョン管理システムで2000年初頭に多く使われていました。フォルダベースでデータサーバーにバックアップされます。
Gitと比べてブランチの管理に手間がかかり、コミットする時間も比較的長い特徴があり、現在新規開発ではGitが採用されるケースが多いです。
ゲーム開発で多く採用されている中央集中型のバージョン管理システムです。
Gitに比べて画像などのバイナリファイルのアセット管理が得意で、ゲーム開発ツールと統合することができます。
開発者が5人以上の場合は、有料プランに移行する必要があります。
基本的な使い方
PCにGitをインストールする必要があります。PCによってはデフォルトでインストールされていることもあるので、まずはコマンドで確認します。
$ git --version
git version 2.xx.xx
or
command not found
バージョンが表示されない場合は「こちら」からダウンロードしてください。
バージョンが確認できるようになったら、Git管理したいフォルダでGitを初期化します。
$ pwd
/Users/user/project
$ git init
Initialized empty Git repository in /Users/user/project
Gitで管理されているフォルダのことをリポジトリ(repository)と呼びます。リポジトリ内にファイルを作成して中身を入力して保存します。
status
というコマンドでリポジトリの状態を確認することができます。
$ git status
On branch master
No commit yet
Untracked files:
(use "git add <file>..." to include in what will be commited)
first-file.html
nothing added to commit but untracked files present (use "git add" to track)
日本意訳すると
今のブランチはmasterです
まだコミットされていません
追跡されていないファイル:
(git add <ファイル名>...
というコマンドを使ってコミットするファイルに含めます)
first-file.html
コミットされたファイルはありませんが、追跡されていないファイルが存在しています(git add
コマンドで追跡状態にできます)
となります。Git管理下ではファイルの変更状態が4種類に分類されます。
- 新規作成
- ファイルの内容変更
- ファイル名の変更/フォルダ移動
- 削除
いずれかの変更状態にあるファイルをコミットすることでバージョン履歴を作成します。また、Gitではコミットの前にコミット対象のファイルを”指定する”必要があります。これをステージングと言います。
$ git add first-file.html #作成したファイルのステージング
$ git commit -m "最初のコミット" #-mの後にコミットメッセージを入力します。
1 file changed, 11 insertions(+)
create mode 100644 first-file.html
これでバージョン履歴の作成が完了です。履歴を振り返る場合はlogコマンドで表示できます。
$ git log
commit hashidxxxxx (HEAD -> master)
Author: コミットした人の名前 <メールアドレス>
Date: Thu Mar 6 00:05:05 2025 +0900
最初のコミット
差分の確認
バージョン管理の強力な機能として修正した箇所の差分の確認することができる機能があります。
上で修正したファイルを一部修正します。
VSCodeのような統合開発環境(IDE)では修正した部分がハイライトされます。diffコマンドとlogコマンドで確認できるHash IDを指定することで現在のファイルの差分を確認することができます。
$ git diff hashidxxxxx
diff --git a/first-file.html b/first-file.html
index xxx..xxx 100644
--- a/first-file.html
+++ b/first-file.html
@@ -6.6 +6,7@@
<title>First File</title>
</head>
<body>
- <p>一番最初のコミット</p>
+ <p>2回目のコミット</p>
+ <p>追加した行</p>
</body>
</html>
\ No newline at end of file
修正したファイル名と修正内容(-の行が修正前、+の行が修正後)が表示されます。
VSCodeでは左タブのソース管理からよりビジュアライズされた差分を表示することができます。
まとめ
Gitを使ったことのない初心者や非エンジニア向けにバージョン管理の仕組みと強み、Gitの基本的な使い方をご紹介しました。
参照
Git 「Gitの基本」https://git-scm.com/book/ja/v2/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E3%81%AE%E5%9F%BA%E6%9C%AC
GitLab「Gitとは?初心者に使い方、意味、機能、利点を徹底解説」https://about.gitlab.com/ja-jp/blog/2024/10/08/what-is-git/
Perforce「Perforce Helix Core の価格とプラン | Perforce Software」https://www.perforce.com/resources/vcs/helix-core-pricing