まだまだだ煮詰まっていませんが、GitHubのRule設定を公表します。 おすすめの設定などありましたらコメントいただけますと幸いです。
対象のパッケージ
このパッケージの設定です。 Gitリポジトリのパッケージを効率的に管理するためのプラグイン
Bypass list
バイパス権限リスト
ルールセットをバイパスする(対象外とする)役割、チーム、またはアプリを追加します。
- 推奨設定:
Repository admin
を指定 - 理由: リポジトリオーナーである自身はルールに従う必要が無くなるので一旦指定。いずれ変更すると思います
Targets
対象
どのブランチに対してルールを適用するか
Target branches
対象ブランチ
- 推奨設定: Defaultを指定
- 理由: Defaultを指定した場合、
Setting > General > Default branch
に指定したブランチを対象とします。初期値はmain
が対象となります。
Branch rules
ブランチのルール
参照 (ref) とは?
Gitでブランチやタグなど、作業中の場所やポイントの意。
Restrict creations
作成を制限
一致する参照 (ref) を作成できるのはバイパス権限を持つユーザーのみです。
- 推奨設定: 有効にする
- 理由: ブランチ(
main
など)の作成を権限のあるユーザーだけに限定することで、不適切な参照の作成を防ぐ。
Restrict updates
更新を制限
一致する参照 (ref) を更新できるのはバイパス権限を持つユーザーのみです。
- 推奨設定: 有効にする
- 理由: 更新操作を権限を持ったユーザーのみが実行可能とします。これにより、不意なコミットや操作ミスから保護できます。
更新操作とは?
- 新しいコミットのプッシュ
- ブランチの移動(更新されるべき HEAD を変更)
- 再書き込み(例: リベースなどで履歴を書き換える)
使用例
- 権限を持ったユーザーのみコミット可能にしてブランチを守る
- すべてのユーザーをコミット不可にし、ボットのみコミット可能にする。テスト通過した場合のみコミットする
Restrict deletions
削除を制限
一致する参照 (ref) を削除できるのはバイパス権限を持つユーザーのみです。
- 推奨設定: 有効にする
- 理由: ブランチが誤って削除されることを防ぎます。
Require linear history
リニア履歴を要求
一致する参照 (ref) にマージコミットをプッシュすることを防ぎます。(代わりにリベースする)
- 推奨設定: 無効
- 理由: マージコミットを禁止する。代わりにリベースする必要があるのでチーム全員がGitを理解している必要がある。チームによるので一旦無効。
リベース(Rebase)とは?
リベースは、あるブランチの変更履歴を他のブランチの先端に付け替える操作です。既存のコミット履歴を再構築(書き換え)し、あたかも最初からそのブランチ上で開発していたような形に整えます。そうする事で履歴が直線的で見やすくなります。
綺麗に保たれたリポジトリ例
リベースの方が、コミット履歴が分かりやすい。
Require deployments to succeed
デプロイの成功を必須にする
このルールに一致する参照 (ref) にプッシュする前に、どの環境へのデプロイが成功していなければならないかを選択します。
- 推奨設定: 無効
- 理由: Unity開発で使えるか不明、調べきれていないので一旦保留
有効にすると?
参照 (ref) を更新する前に、特定の環境でデプロイが成功していることを条件とします。たとえば、CI/CDが行われる staging
環境での成功を指定することが可能。
Require signed commits
署名付きコミットを必須にする
一致する参照 (ref) にプッシュされるコミットには、検証済み署名が必要です。
- 推奨設定: 無効
- 理由: コミット者全員が設定している必要がある為一旦無効。
署名付きコミットとは?
署名付きコミットは、文字通り「コミットに署名を付ける」もので、この署名は暗号化技術を使って「そのコミットが正真正銘あなたによるものである」ことを証明します。コミットした人の信頼性は上がりますが、個々が設定している必要があるので有効にするのは難しいかもしれません。
Require a pull request before merging
マージ前にプルリクエストを必須にする
すべてのコミットは対象ブランチ以外で行い、プルリクエストを通じて提出される必要があります。
- 推奨設定: 有効にする
- 理由: すべての変更を必ずプルリクエスト経由で行うことを強制し、直接ブランチへの書き込みを防ぐ。
- Required approvals
承認の必須数
プルリクエストをマージする前に必要な承認レビューの数です。
- 推奨設定: 1(または人数に応じて適切な数を設定)
- 理由: コード品質を保ち、十分なレビューを確保
- Dismiss stale pull request approvals when new commits are pushed
新しいコミットがプッシュされた場合、古いプルリクエストの承認を無効化する
- 推奨設定: 有効にする
- 理由: 新しいコミットが追加された場合、古い承認内容が無効化されることで、最新の変更に対してレビューが行われることを保証する。
- Require review from Code Owners
コード所有者のレビューを必須にする
- 推奨設定: 有効にする
- 理由: 指定されたコードオーナーが責任を持ってコード変更の内容を確認し、影響範囲を把握することで、不適切な変更を防ぐ。
"Code Owners"(コードオーナー)とは?
リポジトリ内の特定のファイルやディレクトリに対して責任を持つ特定のユーザーやチーム
- Require approval of the most recent reviewable push
最新のレビュー可能なプッシュの承認を必須にする
- 推奨設定: 有効にする
- 理由: 最新の変更を必ず第三者が確認するルールを設け、プッシュ時のミスや誤りを防ぐ。
- Require conversation resolution before merging
マージ前に会話の解決を必須にする
- 推奨設定: 有効にする
- 理由: プルリクエストのすべてのコメントや議論を解決することで、未解決の問題がないことを確認する。
- Request pull request review from CopilotPreview
Copilot Preview によるプルリクエストレビュー依頼
新しいプルリクエストについて、パフォーマンスを向上させるためにAIレビュー(Copilot)を活用できる場合、追加の知見や自動レビューを利用することでレビュー効率を高める。
- 推奨設定: 無効
- 理由: どういう動作になるか分からないので一旦無効
- Allowed merge methods
許可されるマージ方法 (プレビュー機能)
プルリクエストをマージする際に、マージコミット、スカッシュ、リベースを任意の組み合わせで許可できます。少なくとも1つのオプションを有効にする必要があります。
- 推奨設定:
Merge
,Squash
,Rebase
すべて有効化 - 理由: プロジェクトのニーズに応じて適切なマージ方法を選択する必要があるが、一旦すべて有効化
Require status checks to pass
ステータスチェックの合格を必須にする
参照 (ref) が更新される前に、どのステータスチェックが合格している必要があるかを選択します。有効化されている場合、最初に別の参照にコミットをプッシュしてチェックを通過する必要があります。
- 推奨設定: 無効
- 必須ステータスチェック例:
npm test
npm audit
- CI/CDのチェック結果 (GitHub Actions)
- 必須ステータスチェック例:
- 理由: 使ってみたいが、一旦保留
有効にすると?
状態チェックが合格するまでリファレンスが更新されないようにすることで、コードの品質担保が可能です。
Block force pushes
強制プッシュをブロック
プッシュ権限を持つユーザーが参照 (ref) に強制プッシュするのを防ぎます。
- 推奨設定: 有効にする
- 理由: コミット履歴が強制的に上書きされることを防止します。
Require code scanning results
コードスキャン結果を必須にする
参照を更新する前に、どのツールがコードスキャン結果を提供する必要があるかを選択します。設定されている場合、コードスキャンを有効にし、対象となるコミットと参照の両方の結果を持つ必要があります。