メインコンテンツにスキップ

🌿 Gitとは?

📖 定義

Gitは分散バージョン管理システムです。コードの変更履歴を追跡・管理し、複数の開発者が同時に作業できるようにします。GitHubGitLabBitbucketなどは、Gitリポジトリをホスティングするサービスで、コラボレーションとコード共有を簡単にします。

🎯 比喩で理解する

ゲームのセーブポイント

Gitをゲームのセーブシステムに例えると:

  • Commit: ゲームセーブ - 現在の状態を保存
  • Branch: 並行世界 - メインストーリーを保ちながら異なる選択を試す
  • Merge: 並行世界を合体 - 良い結果をメインストーリーに反映
  • Revert: 以前のセーブに戻る - ミスした時に復旧

⚙️ 動作原理

Gitの3つの領域

Working Directory (作業ディレクトリ)
↓ git add
Staging Area (ステージング領域)
↓ git commit
Repository (リポジトリ)
↓ git push
Remote Repository (リモートリポジトリ)

Gitワークフロー

1. ファイルを修正 (Working Directory)
2. 変更をステージング (Staging Area) → git add
3. コミットを作成 (Local Repository) → git commit
4. リモートにプッシュ (Remote Repository) → git push

💡 実例

基本的なGitコマンド

# Gitリポジトリを初期化
git init
# またはリモートリポジトリをクローン
git clone https://github.com/username/repo.git

# 状態確認
git status

# 変更をステージング
git add index.html # 特定のファイル
git add . # すべてのファイル

# コミットを作成
git commit -m "feat: ユーザーログイン追加"

# プッシュ(アップロード)
git push origin main

# プル(ダウンロード)
git pull origin main

ブランチ操作

# ブランチ確認
git branch

# 新しいブランチを作成
git branch feature-login

# ブランチに移動
git checkout feature-login
# または作成と同時に移動
git checkout -b feature-login

# 最新の方法 (Git 2.23+)
git switch feature-login
git switch -c feature-login

# ブランチをマージ
git checkout main
git merge feature-login

# ブランチを削除
git branch -d feature-login

コラボレーションシナリオ

# === 開発者A ===
# 1. リポジトリをクローン
git clone https://github.com/team/project.git

# 2. 新しい機能ブランチを作成
git checkout -b feature-payment

# 3. コードを書いてコミット
git add .
git commit -m "決済機能を実装"

# 4. リモートにプッシュ
git push origin feature-payment

# 5. GitHubでPull Requestを作成

# === 開発者B ===
# 1. 最新コードを同期
git checkout main
git pull origin main

🤔 よくある質問

Q1. GitとGitHubの違いは?

A:

Git (ツール)
├─ バージョン管理システム(ソフトウェア)
├─ ローカルコンピュータで動作
├─ コマンドライン(CLI)で使用
└─ 無料、オープンソース

GitHub (サービス)
├─ Gitリポジトリホスティングサービス
├─ Webベースプラットフォーム
├─ コラボレーション機能(PR、Issue、Wiki)
└─ コード共有とオープンソース

比喩: Git = ワードプロセッサ、GitHub = Googleドキュメント

Q2. コミットメッセージの書き方は?

A: 明確で一貫した規約に従います:

# ✅ 良いコミットメッセージ
git commit -m "feat: ユーザーログインAPI追加"
git commit -m "fix: 会員登録ボタンクリックエラー解決"
git commit -m "refactor: 重複コード削除と関数分離"

# ❌ 悪いコミットメッセージ
git commit -m "修正"
git commit -m "バグ修正"
git commit -m "作業中..."

# Conventional Commits規則
feat: 新機能
fix: バグ修正
docs: ドキュメント変更
style: コードフォーマット
refactor: コードリファクタリング
test: テスト追加
chore: ビルド、設定変更

Q3. MergeとRebaseの違いは?

A:

# Merge
# - ブランチ履歴をそのまま維持
# - マージコミットを作成
git checkout main
git merge feature-login

結果:
A---B---C---D main
\ /
E-----F feature-login

# Rebase
# - ブランチを別のベースに移動
# - 線形履歴を維持
git checkout feature-login
git rebase main

結果:
A---B---C---D main
\
E'---F' feature-login

# いつ使う?
Merge: チームコラボレーション、Pull Request
Rebase: 個人ブランチの整理、きれいな履歴

Q4. Conflict(衝突)の解決方法は?

A:

# 衝突が発生
git merge feature-login
# CONFLICT (content): Merge conflict in index.html

# 衝突ファイルを確認
git status

# ファイルを開いて手動で解決
# <h1>最終タイトル</h1>

# 解決完了を表示
git add index.html
git commit -m "Merge branch 'feature-login' - タイトル衝突解決"

# 必要に応じてマージをキャンセル
git merge --abort

🎬 まとめ

Gitは現代開発の必須ツールです:

  • バージョン管理: すべての変更履歴を追跡
  • コラボレーション: 複数の開発者が同時作業
  • ブランチ: 安全な実験と機能開発
  • 復旧: いつでも以前の状態に戻る

Gitをマスターすれば、自信を持ってコードを管理し、チームと効率的にコラボレーションできます! 🌿✨