Default git setup to protect main after git init/clone. Use when standardizing repo bootstrap.
git init/clone後のmain保護をデフォルト化するため、GitHubブランチ保護(Option A)とグローバルなフック設定、ローカルpre-commit/pre-push(Option B)を組み合わせます。さらに .gitattributes と .editorconfig でクロスプラットフォームの環境差異を吸収します。
以下の状況で活用してください:
git-commit-practices - コミット運用と規約github-pr-workflow - PR作成とマージフローskill - Skill執筆の標準skill - Skill品質の検証mainに対する最小限の保護ルールを作成し、PRを必須化します。これが基盤です — この設定がなければ、誰でもmainに直接プッシュできます。
Settings > Branches > Add rule
Branch name pattern: main
Enable: Require a pull request before merging
新規リポジトリのセットアップや、既存リポジトリへの保護追加時に使います。
Values: 基礎と型 / 継続は力
.gitattributes と .editorconfig を追加し、クロスプラットフォームの差異を吸収します。これらがないと、異なるOSやAIエージェントのサンドボックスからcloneしたメンバーが全ファイルmodifiedになる問題が発生します。
.gitattributes(改行コード正規化):
* text=auto eol=lf
*.ps1 text eol=crlf
*.bat text eol=crlf
*.cmd text eol=crlf
*.sln text eol=crlf
*.png binary
*.jpg binary
*.ico binary
.editorconfig(エディタ設定正規化):
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
[*.{yml,yaml}]
indent_size = 2
[*.md]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab
既存リポジトリに導入する場合は、.gitattributes 追加後に git add --renormalize . で追跡ファイルを再正規化してください。
新規リポジトリ作成時、または異なるOS・エディタ・AIエージェントを使うメンバーのオンボーディング時に使います。
Values: 基礎と型 / 余白の設計
mainへのマージを意図的かつ追跡可能にするため、レビュー要件を定義します。Code Ownersを有効化し、新コミット時に既存の承認を無効化して責任を明確にします。
Require a pull request before merging:
✅ Require approvals: 1
✅ Dismiss stale pull request approvals when new commits are pushed
✅ Require review from Code Owners
mainマージの責任を明確化し、レビュー品質を統一したいときに使います。
Values: 成長の複利 / ニュートラル
CIチェックでマージをゲートし、壊れたビルドをmainに入れません。必須チェックでmainをグリーンに保ち、ロールバックリスクを低減します。
required_status_checks:
- ci/build
- ci/test
CIパイプラインがあり、リグレッションを防ぎたいときに使います。
Values: 継続は力 / 基礎と型
直接プッシュ権限を制限し、管理者にも保護を適用します。"Include administrators"を有効化し、プッシュ可能なユーザーを制限します。
✅ Include administrators
✅ Restrict who can push to matching branches
Allowed: release-bot only
規制環境や監査対象の運用で強い統制が必要なときに使います。
Values: ニュートラル / 基礎と型
pre-commitとpre-pushフックを導入し、変更がリモートに届く前にmainへのコミット・プッシュをブロックします。
# このリポジトリにフックを導入
./scripts/setup.sh
privateリポジトリの保護代替、ローカル安全策、またはリリースウィンドウ中に使います。
Note:
.git/hooks/にコピーする代わりに、リポジトリレベルのフックディレクトリをgit config core.hooksPath .githooksで指定できます。フックがバージョン管理され、clone後にセットアップスクリプト不要で自動適用されます。
トラブルシューティング(Windows):
setup.ps1がセキュリティエラーで失敗する場合、PowerShellの実行ポリシーがRestrictedになっている可能性があります。Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSignedを実行してローカルスクリプトを許可してから再試行してください。
Values: 継続は力 / 基礎と型
core.hooksPathでグローバルフックを設定し、新規リポジトリに保護を自動継承させます。
git config --global core.hooksPath "~/.githooks"
同一端末で複数リポジトリを管理し、自動保護を適用したいときに使います。
Values: 基礎と型 / 継続は力
明確なコミュニケーションで保護を展開します:PR運用ポリシーの告知、セットアップスクリプトの共有、オンボーディング資料の更新を行います。
## オンボーディングチェックリスト
- [ ] `./scripts/setup.sh` を実行してフックを導入
- [ ] mainのブランチ保護が有効か確認
- [ ] github-pr-workflowでPR運用を確認
複数リポジトリの管理や、チーム間で統一した保護が必要なときに使います。
Values: 成長の複利 / 継続は力
保護を恒久的に無効化せずに問題を解消します。緊急ホットフィックスでは、管理者バイパスと事後レビューを組み合わせます。
# 緊急ホットフィックス: 明示的な承認のみでバイパス
git push --no-verify origin hotfix/critical-fix
# 事後: バイパスのレビューと記録
保護が緊急修正をブロックしたとき、または環境間でフックの動作が異なるときに使います。
Values: ニュートラル / 温故知新
.gitattributes と .editorconfig を追加するcore.hooksPath を全リポジトリに適用する。
init.templateDir を新規リポジトリに適用する。
mainへの直接プッシュを避ける。
Fix: "Include administrators" を必ず有効化し、権限を記録する。
Fix: mainの直接プッシュ権限を段階的に撤廃する。
Fix: GitHubの保護ルールでチーム全体を強制する。
--no-verifyを常用フローにするQ: 無料プランのprivateリポジトリでも保護できますか?
A: GitHubのブランチ保護は有料プランが必要です。ローカルフックで代替してください。
Q: WindowsでPowerShellフックは自動実行されますか?
A: Git for WindowsはBashでフックを実行します。Bash版を使うか共有フックパスに配置してください。
Q: git initで自動的にフックは入りますか?
A: core.hooksPath または init.templateDir をグローバル設定した場合のみ自動適用されます。
Q: 管理者もブロックされますか?
A: ルールで"Include administrators"を有効化した場合のみ対象になります。
| ステップ | 目的 | 使うとき | |----------|------|----------| | 1 | ブランチ保護ルール | PR運用を徹底したい | | 2 | 環境ファイル | クロスプラットフォーム統一 | | 4 | 必須ステータスチェック | ビルド/テストを必須化 | | 6 | ローカルフック | ローカル安全策が必要 | | 7 | グローバルデフォルト | git init/cloneを標準化 |
| 状況 | 推奨 | 理由 | |------|------|------| | 新規リポジトリ | .gitattributes + .editorconfig追加 | 初日から環境差異を吸収 | | マルチOSチーム | core.hooksPath設定 | 全体デフォルト化 | | 新規のみ適用 | init.templateDir設定 | 既存に影響なし | | private/無料プラン | ローカルフック | サーバー保護不可 | | チーム運用 | PR必須化 | 変更の追跡性向上 |
# フック導入(pre-commit + pre-push)(macOS/Linux/Git Bash)
./scripts/setup.sh
# フック導入(PowerShell)
.\scripts\setup.ps1
# グローバルフック設定(全リポジトリ)
git config --global core.hooksPath "~/.githooks"
# initテンプレート設定(新規のみ)
git config --global init.templateDir "~/.git-template"
# 現在のブランチ確認
git branch --show-current
npx skills add RyoMurakami1983/git-initial-setup下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer