.claude/を丸ごと無視するのは間違い# これは間違い!
.claude/# Claude Code: 個人設定のみ無視、チーム設定は管理対象
.claude/settings.local.json
.claude/hooks/local/
.claude/commands/local/
.claude/logs/
.claude/*.log
.claude/audit-*.log
# 以下はGit管理対象(明示的コメント)
# .claude/settings.json ← チーム標準設定
# .claude/CLAUDE.md ← プロジェクト規律
# .claude/commands/ ← チーム共有コマンド
# .claude/hooks/ ← チーム共有Hook| ファイル | 役割 | Git管理 | 優先度 | 用途 |
|---|---|---|---|---|
settings.json | チーム共有 | ✅ 管理対象 | 低 | チーム標準・規律 |
settings.local.json | 個人専用 | ❌ 無視対象 | 高 | 個人最適化 |
Claude Codeは以下の順序で設定を読み込み・マージします:
1. Enterprise管理ポリシー (システム全体)
2. ~/.claude/settings.json (個人グローバル)
3. project/.claude/settings.json (チーム共有) ← Git管理
4. project/.claude/settings.local.json (個人専用) ← Git無視重要: settings.local.jsonがsettings.jsonより優先されます
project-repo/
├── .gitignore # 適切な.gitignore設定
├── .claude/
│ ├── settings.json # 🔄 Git管理(チーム標準)
│ ├── settings.local.json # 🚫 Git無視(個人専用)
│ ├── CLAUDE.md # 🔄 Git管理(プロジェクト規律)
│ ├── commands/ # チーム共有コマンド
│ │ ├── deploy.md # 🔄 Git管理(チーム標準)
│ │ ├── test-workflow.md # 🔄 Git管理(チーム標準)
│ │ ├── code-review.md # 🔄 Git管理(チーム標準)
│ │ └── local/ # 個人専用コマンド
│ │ ├── my-shortcuts.md # 🚫 Git無視(個人専用)
│ │ └── debug-helper.md # 🚫 Git無視(個人専用)
│ └── hooks/ # Hook管理
│ ├── pre-commit.sh # 🔄 Git管理(チーム標準)
│ ├── post-edit-format.sh # 🔄 Git管理(チーム標準)
│ ├── team-linter.sh # 🔄 Git管理(チーム標準)
│ └── local/ # 個人専用Hook
│ ├── personal-logger.sh # 🚫 Git無視(個人専用)
│ └── debug-tracer.sh # 🚫 Git無視(個人専用)
├── src/
├── tests/
└── package.json{
"_description": "チーム共有設定 - 全メンバー適用・Git管理対象",
"_team": "このファイルの変更はチーム全体に影響します",
"permissions": {
"allow": [
"Bash(npm run test)",
"Bash(npm run build)",
"Bash(npm run lint)",
"Bash(git add *)",
"Bash(git commit *)",
"Read(*)",
"Write(src/*)",
"Write(tests/*)",
"Write(docs/*)",
"DeleteFile(*.tmp)",
"DeleteFile(node_modules/*)"
],
"deny": [
"Bash(npm run deploy:prod)",
"Bash(rm -rf src)",
"Bash(git push origin main)",
"DeleteFile(src/*)",
"DeleteFile(.env*)",
"DeleteFile(package.json)",
"WriteFile(.env.production)"
]
},
"hooks": {
"PostToolUse": [
{
"matcher": "Edit",
"command": "./.claude/hooks/team-formatter.sh \"$TOOL_INPUT_PATH\"",
"description": "チーム標準コードフォーマット"
},
{
"matcher": "Write",
"command": "./.claude/hooks/pre-commit.sh",
"description": "チーム標準品質チェック"
}
],
"PreToolUse": [
{
"matcher": "Bash",
"command": "./.claude/hooks/team-command-guard.sh \"$TOOL_INPUT_COMMAND\"",
"description": "チーム危険コマンド防止"
}
]
}
}{
"_description": "個人専用設定 - Git無視対象・自由にカスタマイズ可能",
"_personal": "このファイルの変更は自分にのみ影響・他メンバーには共有されません",
"permissions": {
"allow": [
"Bash(npm run dev:debug)",
"Bash(npm run dev:watch)",
"DeleteFile(my-debug-*)",
"DeleteFile(temp-*)",
"Write(tmp/*)",
"Write(debug/*)",
"Bash(docker logs *)"
]
},
"hooks": {
"PostToolUse": [
{
"matcher": "*",
"command": "./.claude/hooks/local/personal-activity-logger.sh",
"description": "個人作業ログ記録"
},
{
"matcher": "Edit",
"command": "./.claude/hooks/local/my-custom-formatter.sh",
"description": "個人用追加フォーマット"
}
],
"Stop": [
{
"matcher": "",
"command": "./.claude/hooks/local/session-summary.sh",
"description": "個人セッション要約"
}
]
}
}# 1. リポジトリクローン
git clone https://github.com/team/awesome-project.git
cd awesome-project
# 2. チーム設定は自動適用(settings.jsonがGit管理されているため)
claude # チーム標準設定が自動読み込み
# 3. 個人設定を作成(オプション)
cp .claude/settings.json .claude/settings.local.json
# settings.local.json を個人用にカスタマイズ
# Claude Codeが自動的に .gitignore に追加
# 4. 個人用コマンド・Hook作成(オプション)
mkdir -p .claude/commands/local .claude/hooks/local
# 個人専用のスラッシュコマンドやHookを追加# リードが行う設定更新
vim .claude/settings.json
# チーム全体のルール変更
git add .claude/settings.json .claude/CLAUDE.md
git commit -m "feat: 本番デプロイ操作の追加制限"
git push origin main
# 他メンバーは通常のgit pullで更新取得
git pull origin main
# 次回 claude 起動時に新しいチーム設定が自動適用# 各メンバーが個別に行う
vim .claude/settings.local.json
# 個人の作業効率化設定
# Git管理対象外なので commit/push 不要
# 他メンバーには影響なし# === Claude Code設定管理 ===
# 個人専用設定(Git無視)
.claude/settings.local.json
.claude/hooks/local/
.claude/commands/local/
.claude/logs/
.claude/*.log
.claude/audit-*.log
.claude/debug-*.json
.claude/personal-*.md
# チーム共有設定(Git管理対象)
# .claude/settings.json ← チーム標準設定
# .claude/CLAUDE.md ← プロジェクト規律
# .claude/commands/ ← チーム共有コマンド(local/除く)
# .claude/hooks/ ← チーム共有Hook(local/除く)
# === その他の標準的な無視設定 ===
node_modules/
dist/
build/
.env.local
.env.*.local
*.log
.DS_Store
.vscode/settings.json{
"permissions": {
"deny": [
"Bash(npm run deploy:prod)", // 本番デプロイ防止
"DeleteFile(src/*)", // ソースコード保護
"WriteFile(.env.production)", // 本番環境変数保護
"Bash(git push origin main)" // main直接push防止
]
},
"hooks": {
"PostToolUse": [
{
"matcher": "Edit",
"command": "npm run lint:fix", // 自動リント実行
"description": "チーム標準リント"
}
]
}
}{
"permissions": {
"allow": [
"Bash(npm run dev:debug)", // 個人デバッグ環境
"DeleteFile(my-temp-*)", // 個人一時ファイル
"Write(playground/*)" // 個人実験領域
]
},
"hooks": {
"PostToolUse": [
{
"matcher": "*",
"command": "./hooks/local/my-logger.sh", // 個人作業ログ
"description": "個人活動記録"
}
]
}
}# 既存プロジェクトでの導入
echo "# Claude Code個人設定" >> .gitignore
echo ".claude/settings.local.json" >> .gitignore
echo ".claude/hooks/local/" >> .gitignore
echo ".claude/commands/local/" >> .gitignore
echo ".claude/*.log" >> .gitignore
git add .gitignore
git commit -m "feat: Claude Code設定のGit管理戦略導入"# チーム標準設定作成
mkdir -p .claude/{commands,hooks}
# 基本的なチーム設定
cat > .claude/settings.json << 'EOF'
{
"_description": "チーム共有設定",
"permissions": {
"deny": [
"Bash(npm run deploy:prod)",
"DeleteFile(src/*)"
]
}
}
EOF
git add .claude/settings.json
git commit -m "feat: Claude Codeチーム標準設定追加"# 各メンバーが個別実行
cp .claude/settings.json .claude/settings.local.json
# 個人用にカスタマイズ...従来の「.claude/ 丸ごと無視」から、**「チーム資産と個人設定の適切な分離」**へ。
この戦略により:
Claude Codeを活用したチーム開発において、このGit管理戦略は必須の基盤となります。