手帳

  • 2025-10-22
  • IT系

Part 1ではSSH設定、Part 2では.gitignore問題を解説しました。最終回のPart 3では、これまでの内容をまとめ、ベストプラクティスと設定例を紹介します。

まとめと今後の注意点

先生:じゃあ、今回学んだことをまとめよう。

.gitignoreの重要ルール

  1. .gitignoreは「まだ追跡されていないファイル」にしか効かない
  2. すでにコミットしたファイルは.gitignoreに追加しても無視されない
  3. プロジェクトの最初に.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備考
HTTPSPersonal Access Token自動管理されるVSCodeに依存
SSHSSH鍵ペア影響なしconfigで完全制御

IdentitiesOnly の重要性

生徒:最後に、IdentitiesOnly yesって何でしたっけ?

先生:これがないと、SSHが.ssh/にある全てのキーを順番に試してしまうんだ。

生徒:それの何が問題なんですか?

先生:例えば、10個のキーがあったら全部試そうとして、GitHub側が「試行回数多すぎ!」ってエラーを返すことがあるんだ。IdentitiesOnly yesを付けることで、このキーだけ使ってって明示的に指定できる。

生徒:なるほど!トラブル防止なんですね。

全体のまとめ

以上、複数GitHubアカウントの使い分け方法と、.gitignoreの落とし穴について解説しました。

ポイントまとめ

  • VSCode RemoteはHTTPS認証を自動管理するが、複数アカウントには不向き
  • SSH + Configファイルで完全にアカウントを使い分けられる
  • .gitignoreは「まだ追跡されていないファイル」にしか効かない
  • 巨大ファイルを間違えてコミットしたら、履歴からの完全削除が必要
  • プロジェクトの最初に.gitignoreを設定するのがベストプラクティス

これらの知識を活用して、快適なGit/GitHub環境を構築してください!