
Part 1ではSSH設定、Part 2では.gitignore問題を解説しました。最終回のPart 3では、これまでの内容をまとめ、ベストプラクティスと設定例を紹介します。
まとめと今後の注意点
先生:じゃあ、今回学んだことをまとめよう。
.gitignoreの重要ルール
- .gitignoreは「まだ追跡されていないファイル」にしか効かない
- すでにコミットしたファイルは.gitignoreに追加しても無視されない
- プロジェクトの最初に.gitignoreを作成・コミットするのがベストプラクティス
追跡されたファイルを削除する手順
# 1. Gitの追跡から削除(ファイルは残す)
git rm -r --cached <file_or_directory>
# 2. コミット
git commit -m "Remove files from tracking"
# 3. もし過去の履歴にも残っている場合
git filter-branch --force --index-filter
"git rm --cached --ignore-unmatch <files>"
--prune-empty --tag-name-filter cat -- --all
# 4. クリーンアップ
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now --aggressive
# 5. 強制プッシュ
git push -f origin main
絶対にGitに入れてはいけないファイル
生徒:どんなファイルを.gitignoreに入れればいいんですか?
先生:最低限これは入れておこう:
# ログファイル
*.log
/logs/
/logs/**
# データベース
*.sqlite
*.db
# 環境設定
.env
.env.local
# 証明書と秘密鍵
*.pem
*.key
*.crt
/certs/
/ssl/
# 依存関係
node_modules/
vendor/
# ビルド成果物
/dist/
/build/
*.pyc
__pycache__/
# IDE設定
.vscode/
.idea/
*.swp
# OS生成ファイル
.DS_Store
Thumbs.db
push前の確認習慣
先生:最後に、pushする前の確認習慣を身につけよう。
# 何が追加されるか必ず確認
git status
# 大きなファイルがないか確認
git ls-files | xargs du -h | sort -h | tail -20
# 間違えてaddしてもコミット前なら戻せる
git reset HEAD <file>
生徒:わかりました!気をつけます!
先生:特に、
- ログファイル(何百MBにもなる)
- データベースファイル
- 証明書や秘密鍵
- ビルド成果物
これらは絶対にGitに入れちゃダメだよ。
生徒:はい!今回痛い目に遭ったので、もう忘れません…
複数GitHubアカウントの使い分けまとめ
SSH Configによる完全な制御
必要な手順:
1. 各アカウント用のSSHキーを作成
ssh-keygen -t ed25519 -C "first@example.com" -f ~/.ssh/id_ed25519_github_first
ssh-keygen -t ed25519 -C "second@example.com" -f ~/.ssh/id_ed25519_github_second
2. 公開鍵をGitHubに登録
- 各GitHubアカウントのSettings → SSH and GPG keys → New SSH key
3. ~/.ssh/configでエイリアスを設定
Host github.com-first
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github_first
IdentitiesOnly yes
Host github.com-second
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github_second
IdentitiesOnly yes
4. リモートURLにエイリアスを使用
git remote set-url origin git@github.com-first:username/repo.git
HTTPSとSSHの違い
| 方式 | 認証方法 | 複数アカウント | VSCode Remote | 備考 |
|---|---|---|---|---|
| HTTPS | Personal Access Token | △ | 自動管理される | VSCodeに依存 |
| SSH | SSH鍵ペア | ◎ | 影響なし | configで完全制御 |
IdentitiesOnly の重要性
生徒:最後に、IdentitiesOnly yesって何でしたっけ?
先生:これがないと、SSHが.ssh/にある全てのキーを順番に試してしまうんだ。
生徒:それの何が問題なんですか?
先生:例えば、10個のキーがあったら全部試そうとして、GitHub側が「試行回数多すぎ!」ってエラーを返すことがあるんだ。IdentitiesOnly yesを付けることで、このキーだけ使ってって明示的に指定できる。
生徒:なるほど!トラブル防止なんですね。
全体のまとめ
以上、複数GitHubアカウントの使い分け方法と、.gitignoreの落とし穴について解説しました。
ポイントまとめ
- VSCode RemoteはHTTPS認証を自動管理するが、複数アカウントには不向き
- SSH + Configファイルで完全にアカウントを使い分けられる
- .gitignoreは「まだ追跡されていないファイル」にしか効かない
- 巨大ファイルを間違えてコミットしたら、履歴からの完全削除が必要
- プロジェクトの最初に.gitignoreを設定するのがベストプラクティス
これらの知識を活用して、快適なGit/GitHub環境を構築してください!