背景
GitHub初心者が最初にやりがちな事故は、公開リポジトリへの認証情報のハードコードです。ブラウザ・VSCode・CLIのどの入口からGitHubを使う場合でも共通して押さえておくべき、公開前チェックのポイントをまとめます。
1. Public = 全世界に公開、という前提を体に叩き込む
❌ 含めてはいけないもの
- パスワード、APIキー
- 個人情報
- 企業秘密
Publicリポジトリを作った瞬間、そこにコミットされた内容は検索エンジンやスクレイピングボットの対象になります。「あとで消せばいい」は通用しません。過去のコミット履歴にも残り続けるため、削除には別途対応が必要になります(後述)。
2. NG/OKパターンを具体的に覚える
# NG(ハードコード)
API_KEY = "sk_live_abc123xyz"
PASSWORD = "mypassword123"
# OK(環境変数)
import os
API_KEY = os.getenv("API_KEY")
PASSWORD = os.getenv("PASSWORD")
「なんとなく危険」ではなく、この2パターンを機械的に見分けられるようにしておくと、コードレビューやコミット前の確認が速くなります。
3. .gitignoreは最初のコミット前に用意する
# 環境変数
.env
.env.local
# 認証情報
*.pem
*.key
config/secrets.yml
# ビルド成果物
node_modules/
dist/
build/
# OS生成ファイル
.DS_Store
Thumbs.db
.gitignoreは「あとから追加」だと手遅れになりがちです。一度コミットされたファイルは.gitignoreに追加してもリポジトリの履歴には残り続けるため、プロジェクト作成時点で先に用意しておくのが鉄則です。
4. 万が一機密情報をコミットしてしまった場合
# 特定ファイルを履歴から完全削除
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch secrets.txt" \
--prune-empty --tag-name-filter cat -- --all
# 強制プッシュ
git push origin --force --all
git rmで普通に削除しても履歴には残ります。filter-branchで履歴自体を書き換える必要があり、しかもチーム開発では他メンバーに影響が及ぶため、そもそも「事前に防ぐ」ことの方が重要です。該当のAPIキーやパスワードは、履歴を書き換える前に必ず無効化・再発行してください(履歴削除だけでは既に漏洩したキーは無効になりません)。
5. Personal Access Tokenは必要最小限のスコープで
Settings → Developer settings → Personal access tokens
→ Generate new token (classic)
→ 必要な権限のみ選択
→ 有効期限設定(推奨:90日)
CLIやAPIからGitHubを操作する際のトークンも、repo権限をフル付与するのではなく、実際に使う操作に必要な権限だけを選ぶことでリスクを抑えられます。Two-Factor Authenticationの有効化とあわせて、最初のセットアップ時にまとめて設定しておくのがおすすめです。
まとめ
「Publicは全世界公開」という前提の理解と、.gitignoreの事前準備、この2点が公開リポジトリでの事故を防ぐ最低限のルールでした。ブラウザ・VSCode・CLIそれぞれでの具体的な操作手順は元記事にまとめています。