🌿 Gitとは?
📖 定義
Gitは分散バージョン管理システムです。コードの変更履歴を追跡・管理し、複数の開発者が同時に作業できるようにします。GitHub、GitLab、Bitbucketなどは、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をマスターすれば、自信を持ってコードを管理し、チームと効率的にコラボレーションできます! 🌿✨