この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:11
ページ更新者:T
更新日時:2026-06-11 07:12:00

タイトル: git
SEOタイトル: Git 入門 — 分散バージョン管理システムの概要・基本ワークフロー・ブランチ戦略

この記事の要点
  • Git は Linus Torvalds が 2005 年に作った分散型バージョン管理システム (DVCS)。Linux カーネル開発のために生まれた
  • 基本ワークフロー: add → commit → push。各開発者が完全な履歴のローカルコピーを持つ
  • 主要概念: リポジトリ / ブランチ / コミット / リモート / マージ / リベース
  • 主要ホスティングサービス: GitHub / GitLab / Bitbucket。Pull Request 文化と CI/CD 連携が標準
  • ブランチ戦略: GitHub Flow(シンプル、main + feature)/ Git Flow(develop / release / hotfix を持つ)

Git とは

Git は、ソースコードの変更履歴を記録・追跡する分散型バージョン管理システム (Distributed Version Control System) です。2005 年、Linux カーネル開発のために Linus Torvalds が作成しました。

従来の集中型 VCS(Subversion 等)と異なり、各開発者のローカルに完全な履歴のコピーが存在します。オフラインでもコミット可能で、サーバー障害時も作業を継続できます。

集中型 VCS との違い

項目集中型 (SVN/CVS)分散型 (Git/Mercurial)
履歴の場所中央サーバーのみ各開発者のローカル + リモート
オフライン作業コミット不可完全に可能
ブランチ高コスト(コピー)軽量(ポインタのみ)
マージ難しい高度なマージ機能
速度ネットワーク依存ローカル操作は高速

インストールと初期設定

# macOS
brew install git
# または Xcode Command Line Tools に同梱
xcode-select --install

# Ubuntu / Debian
sudo apt install -y git

# Windows
# https://git-scm.com/download/win から Git for Windows をインストール

# バージョン確認
git --version
# git version 2.43.x

# 初回セットアップ(必須)
git config --global user.name "Your Name"
git config --global user.email "you@example.com"

# 既定エディタ
git config --global core.editor "code --wait"

# 既定ブランチ名(GitHub に合わせて main)
git config --global init.defaultBranch main

# 設定確認
git config --list

基本ワークフロー

# 1. リポジトリを作成
git init my-project
cd my-project

# 2. ファイルを作成
echo "# My Project" > README.md

# 3. ステージング(add)
git add README.md
git add .                # 全変更を追加

# 4. コミット(commit)
git commit -m "Initial commit"

# 5. リモートを追加
git remote add origin https://github.com/user/my-project.git

# 6. プッシュ(push)
git push -u origin main

# 既存リポジトリをクローン
git clone https://github.com/user/repo.git
cd repo

# 状態確認
git status

# 変更差分確認
git diff
git diff --staged

# ログ確認
git log --oneline --graph --all

ブランチと統合

# ブランチ作成・切替
git branch feature/login          # 作成のみ
git checkout feature/login        # 切替(旧コマンド)
git switch feature/login          # 切替(推奨、Git 2.23+)
git checkout -b feature/login     # 作成 + 切替
git switch -c feature/login       # 作成 + 切替(推奨)

# ブランチ一覧
git branch                # ローカル
git branch -a             # リモート含む

# マージ
git switch main
git merge feature/login           # マージコミット作成
git merge --no-ff feature/login   # 必ずマージコミット作成
git merge --squash feature/login  # 1 コミットに統合

# リベース(履歴を直線化)
git switch feature/login
git rebase main

# ブランチ削除
git branch -d feature/login       # マージ済のみ削除
git branch -D feature/login       # 強制削除

# リモートブランチ削除
git push origin --delete feature/login

.gitignore

追跡しないファイルのパターンを記述します:

# 依存ディレクトリ
node_modules/
vendor/
__pycache__/

# ビルド成果物
dist/
build/
*.o
*.class

# IDE / エディタ
.idea/
.vscode/
*.swp
.DS_Store

# 環境変数(重要!)
.env
.env.local
*.key
*.pem

# ログ
*.log
logs/

# OS
Thumbs.db
desktop.ini

リモートホスティングサービス

サービス運営特徴
GitHubMicrosoft世界最大、OSS 中心、Actions(CI/CD)、Copilot
GitLabGitLab Inc.セルフホスト可、内蔵 CI/CD、企業利用多い
BitbucketAtlassianJira / Confluence 連携、無料プライベートリポジトリ
Azure DevOpsMicrosoftエンタープライズ、Azure 統合

SSH 鍵セットアップ

# Ed25519 鍵を生成(推奨)
ssh-keygen -t ed25519 -C "you@example.com"

# 公開鍵を表示してコピー
cat ~/.ssh/id_ed25519.pub

# GitHub に登録: Settings → SSH and GPG keys → New SSH key
# にペーストして保存

# 接続テスト
ssh -T git@github.com
# Hi username! You've successfully authenticated...

# リモートを SSH に変更
git remote set-url origin git@github.com:user/repo.git

ブランチ戦略

  • GitHub Flow: main + feature/* のみ。シンプル、Web サービス向け。PR でレビュー → main マージ → 即デプロイ
  • Git Flow: main / develop / feature/* / release/* / hotfix/*。複雑だがリリースサイクルの厳格な製品向け
  • Trunk Based Development: main に直接コミット。短命ブランチ。CI/CD 必須

Pull Request 文化と CI/CD

現代の開発では feature ブランチで作業 → Pull Request (Merge Request) を作成 → コードレビュー → CI(自動テスト)緑 → マージという流れが標準です。

# GitHub Actions の例 (.github/workflows/ci.yml)
name: CI
on:
  pull_request:
    branches: [main]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
        with:
          php-version: '8.3'
      - run: composer install --no-progress
      - run: vendor/bin/phpunit
      - run: vendor/bin/phpstan analyse

FAQ

Q: Git と GitHub の違いは?
A: Git はバージョン管理ツール(ソフトウェア)、GitHub は Git リポジトリのホスティングサービス(Web サイト)です。GitHub なしでも Git は使えます。

Q: merge と rebase どちらを使うべき?
A: チームの方針次第。履歴を綺麗に保ちたいなら rebase、マージの事実を残したいなら merge。push 済みコミットの rebase は禁止

Q: 間違ったコミットを取り消したい
A: 未 push なら git reset --soft HEAD~1、push 済なら git revert <commit> で打ち消しコミットを作成。

Q: 大きなファイル(動画 / バイナリ)を扱いたい
A: Git LFS(Large File Storage)を使う。git lfs installgit lfs track &quot;*.psd&quot;