「Gitって何?」「バージョン管理ってどういう意味?」
エンジニアなら必ず使うGit(ギット)。求人票でも「Git使用経験必須」という記載をよく見かけますよね。
この記事では、Gitの基本を身近な例えを使いながら、初心者にもわかりやすく解説します。
Gitとは?一言でいうと「タイムマシン付きのファイル管理」
Gitとは、ファイルの変更履歴を記録・管理するバージョン管理システムです。
身近な例えで言うと、「タイムマシン付きのファイル管理」です。
WordやExcelで作業していて、「昨日の状態に戻したい……」と思ったことはありませんか?普通のファイル管理では、「報告書_v1.docx」「報告書_v2.docx」「報告書_最終版.docx」「報告書_最終版_修正.docx」と、どんどんファイルが増えてしまいます。
Gitを使えば、1つのファイルのまま、過去の状態にいつでも戻れます。まるでタイムマシンのように、任意の時点の状態を復元できるのです。
Gitでできること
- 変更履歴の記録:いつ、誰が、何を変更したかを記録
- 過去の状態に戻る:任意の時点の状態を復元
- 並行作業:複数人で同時に作業しても安全
- 変更の統合:別々に行った変更を1つにまとめる
- バックアップ:リモートサーバーに保存して安全に管理
なぜGitが必要なのか
プログラミングにおいて、Gitが必要な理由を見ていきましょう。
1. 変更履歴が追える
「このバグ、いつから発生してる?」「この機能、誰が追加した?」
Gitがあれば、すべての変更履歴を確認できます。問題が発生したときに、原因を特定しやすくなります。
2. 安心して実験できる
「新しい機能を試したいけど、失敗したら怖い……」
Gitがあれば、いつでも元の状態に戻せます。安心して新しいコードを試すことができます。
3. チーム開発ができる
複数人で同じプロジェクトを開発するとき、Gitがなければ大変です。誰かの変更を上書きしてしまったり、最新のコードがどれかわからなくなったりします。
Gitがあれば、各自が独立して作業し、後から変更を統合できます。
Gitの基本用語
Gitを理解するために、まず基本用語を押さえましょう。
| 用語 | 意味 | 例え |
|---|---|---|
| リポジトリ | 変更履歴を保存する場所 | プロジェクトフォルダ全体 |
| コミット | 変更を記録する操作 | セーブポイントを作る |
| ブランチ | 作業の分岐 | パラレルワールド |
| マージ | 分岐した作業を統合 | パラレルワールドを合流 |
| プッシュ | ローカルの変更をリモートに送信 | クラウドにアップロード |
| プル | リモートの変更をローカルに取得 | クラウドからダウンロード |
| クローン | リポジトリをコピー | プロジェクトを丸ごとダウンロード |
リポジトリとは
リポジトリ(Repository)は、プロジェクトのファイルと変更履歴を保存する場所です。「レポジトリ」「レポ」「リポ」とも呼ばれます。
ローカルリポジトリとリモートリポジトリ
リポジトリには2種類あります。
- ローカルリポジトリ:自分のPC上にあるリポジトリ
- リモートリポジトリ:サーバー上にあるリポジトリ(GitHub、GitLabなど)
┌──────────────────┐ プッシュ ┌──────────────────┐
│ ローカル │ ─────────────→ │ リモート │
│ リポジトリ │ │ リポジトリ │
│ (自分のPC) │ ←───────────── │ (GitHub等) │
└──────────────────┘ プル └──────────────────┘
基本的な流れは、ローカルで作業し、変更をリモートにプッシュして共有します。
コミットとは
コミット(Commit)は、ファイルの変更を記録する操作です。ゲームでいう「セーブポイント」のようなものです。
コミットには以下の情報が含まれます。
- 変更内容:どのファイルが、どのように変わったか
- コミットメッセージ:何をしたかの説明
- 作成者:誰がコミットしたか
- 日時:いつコミットしたか
- コミットID:一意の識別子(ハッシュ値)
良いコミットメッセージの書き方
コミットメッセージは、後から履歴を見たときにわかりやすいように書きましょう。
| ❌ 悪い例 | ✅ 良い例 |
|---|---|
| 修正 | ログイン画面のバリデーションエラー修正 |
| 更新 | ユーザー一覧に検索機能を追加 |
| fix | 会員登録時のメール送信失敗を修正 |
ブランチとは
ブランチ(Branch)は、作業を分岐させる機能です。「パラレルワールド」のようなものと考えるとわかりやすいでしょう。
例えば、Webサイトを運営しているとき、「新機能を開発したい」と「バグを修正したい」という2つの作業があるとします。
ブランチを使えば、それぞれの作業を独立して進められます。
┌─ 機能開発ブランチ ─────●─────●
/ \
main ●──●──●──●────────────────────────●─→ マージ
\ /
└─ バグ修正ブランチ ───●────●──
よく使われるブランチ名
- main(またはmaster):本番用のブランチ
- develop:開発用のブランチ
- feature/○○:機能開発用のブランチ
- fix/○○:バグ修正用のブランチ
- hotfix/○○:緊急修正用のブランチ
ブランチのメリット
- 安全に実験できる:mainブランチに影響を与えずに作業できる
- 並行開発ができる:複数の機能を同時に開発できる
- レビューしやすい:機能ごとに変更をまとめられる
マージとは
マージ(Merge)は、分岐したブランチを統合する操作です。パラレルワールドを「合流」させるイメージです。
機能開発が完了したら、その変更をmainブランチにマージして反映させます。
コンフリクト(競合)
複数人が同じ箇所を編集していると、マージ時にコンフリクト(競合)が発生することがあります。
<<<<<<< HEAD
const message = "こんにちは";
=======
const message = "Hello";
>>>>>>> feature/greeting
この場合、どちらの変更を採用するか、手動で解決する必要があります。
基本的なGitコマンド
よく使うGitコマンドを紹介します。
初期設定
# ユーザー名とメールアドレスを設定(最初に1回だけ)
git config --global user.name "あなたの名前"
git config --global user.email "your.email@example.com"
リポジトリの作成・取得
| コマンド | 説明 |
|---|---|
| git init | 新しいリポジトリを作成 |
| git clone URL | リモートリポジトリをコピー |
基本操作
| コマンド | 説明 |
|---|---|
| git status | 現在の状態を確認 |
| git add ファイル名 | 変更をステージングに追加 |
| git add . | すべての変更をステージングに追加 |
| git commit -m “メッセージ” | 変更をコミット |
| git log | コミット履歴を表示 |
| git diff | 変更内容を表示 |
ブランチ操作
| コマンド | 説明 |
|---|---|
| git branch | ブランチ一覧を表示 |
| git branch ブランチ名 | 新しいブランチを作成 |
| git switch ブランチ名 | ブランチを切り替え |
| git switch -c ブランチ名 | ブランチを作成して切り替え |
| git merge ブランチ名 | 指定ブランチを現在のブランチにマージ |
リモート操作
| コマンド | 説明 |
|---|---|
| git push | ローカルの変更をリモートに送信 |
| git pull | リモートの変更をローカルに取得 |
| git fetch | リモートの情報を取得(マージはしない) |
GitとGitHubの違い
初心者がよく混同するのが、GitとGitHubの違いです。
| 項目 | Git | GitHub |
|---|---|---|
| 種類 | バージョン管理システム | Webサービス |
| 役割 | ファイルの変更履歴を管理 | リモートリポジトリを提供 |
| 動作環境 | ローカルPC | クラウド(Web) |
| 料金 | 無料(オープンソース) | 基本無料(有料プランあり) |
| 追加機能 | なし | Issue、Pull Request、Actionsなど |
簡単に言うと、Gitはツールで、GitHubはGitを使うためのWebサービスです。
GitHubの他にも、GitLab、Bitbucket、Backlogなど、似たサービスがあります。
実際の作業フロー
Gitを使った一般的な作業フローを紹介します。
1. 個人での基本フロー
# 1. リポジトリを作成
git init
# 2. ファイルを作成・編集
(コードを書く)
# 3. 変更をステージングに追加
git add .
# 4. 変更をコミット
git commit -m "機能Aを実装"
# 5. リモートにプッシュ
git push origin main
2. チームでの開発フロー
# 1. 最新の状態を取得
git pull origin main
# 2. 作業用ブランチを作成
git switch -c feature/new-function
# 3. 作業してコミット
(コードを書く)
git add .
git commit -m "新機能を実装"
# 4. ブランチをプッシュ
git push origin feature/new-function
# 5. GitHubでPull Requestを作成
(Webブラウザで操作)
# 6. レビュー後、mainにマージ
(Webブラウザで操作)
2025年のGitトピック
Gitは継続的に進化しています。2025年の主なトピックを紹介します。
Git 2.52:新コマンド追加
2025年後半にリリースされたGit 2.52では、便利な新コマンドが追加されました。
- git last-modified:ファイルの最終更新日時を簡単に取得
- git repo:リポジトリのメタデータや構造情報を取得
git switchとgit restoreが安定版に
2019年に試験的に導入されたgit switchとgit restoreが、約6年を経て正式に安定版となりました。従来のgit checkoutの機能を分割した、よりわかりやすいコマンドです。
- git switch:ブランチの切り替え専用
- git restore:ファイルの復元専用
内部のRust言語への移行開始
将来的な安全性向上に向けて、Gitの一部がRust言語で再実装され始めています。ユーザーへの影響はありませんが、長期的な品質向上が期待されます。
Git学習の次のステップ
Gitの基本を理解したら、以下のステップに進みましょう。
- Gitをインストールして、実際に触ってみる
- GitHubアカウントを作成して、リモートリポジトリを試す
- 簡単なプロジェクトでコミット・プッシュを練習
- ブランチを使った開発に挑戦
- Pull Requestの流れを体験
- チーム開発に参加(またはOSSへのコントリビュート)
まとめ
この記事で解説した内容をまとめます。
| 項目 | ポイント |
|---|---|
| Gitとは | ファイルの変更履歴を記録・管理するバージョン管理システム |
| リポジトリ | 変更履歴を保存する場所(ローカル/リモート) |
| コミット | 変更を記録する操作(セーブポイント) |
| ブランチ | 作業を分岐させる機能(パラレルワールド) |
| マージ | 分岐したブランチを統合する操作 |
| Git vs GitHub | Gitはツール、GitHubはWebサービス |
Gitは、エンジニアとして働くうえで必須のスキルです。最初は難しく感じるかもしれませんが、実際に使いながら覚えていくのが一番です。まずは小さなプロジェクトで練習してみましょう。
SKサービスでは未経験からのエンジニア転職をサポート
SKサービス株式会社では、完全未経験からエンジニアを目指す方を積極採用しています。
正社員として安定した環境で働きながら、さまざまなプロジェクトで実践経験を積むことができます。受託開発も手掛けており、スキルアップに応じてキャリアの幅を広げていける環境です。
「GitやGitHubを実務で使えるようになりたい」「チーム開発を経験したい」という方、まずはお気軽にご相談ください。