目次
追記
私がやりたかったことは コミット名を変えたいだけ だったので、実はもっとシンプルにできました。
リポジトリの .git/config に
git config user.email "個人用のメールアドレス"
git config user.name "個人用の名前"これを入れておくだけで、そのリポジトリのコミットは全部そのアカウント名で記録されるようです。
GitHubは コミットのメールアドレスが誰のものか で判断するしくみでした。
なので、VS Codeでどちらのアカウントにログインしているかは関係ありませんでした。
一方、SSH鍵を分けると決まるのは
- GitHubにログインするときの本人確認
- どのアカウントとして認証されるか
この2つだけで、“コミットに書く名前” は別の設定 でした。
つまり、SSH鍵を分けてもコミット名は変わらず、コミット名の切り替えには別の設定が必要だった、ということになります。
結果として初心者には少し複雑になってしまいましたが、せっかくなので記録として残しておきます。
鍵をアカウントごとに作成
ターミナルで実行(※メールアドレスは各アカウントに登録されてるもの)
ポートフォリオ用
ssh-keygen -t ed25519 -C "portfolio@example.com"
保存先:~/.ssh/id_ed25519_portfolio個人用
ssh-keygen -t ed25519 -C "personal@example.com"
保存先:~/.ssh/id_ed25519_personalパスフレーズは空でもOK(Enterだけで進む)
GitHubに公開鍵を登録
- GitHubで各アカウントにログイン
- Settings → SSH and GPG keys
- New SSH key をクリック
- 公開鍵(.pub)の中身を貼り付け
例:
cat ~/.ssh/id_ed25519_portfolio.pubSSH設定ファイル .ssh/config にルールを追加
nano ~/.ssh/config存在しなければ新しく作る
Host github.com-portfolio
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_portfolio
IdentitiesOnly yes
Host github.com-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes各リポジトリでリモートURLを設定
ポートフォリオ用リポジトリで
git remote set-url origin git@github.com-portfolio:ユーザー名/リポジトリ名.git個人用リポジトリで
git remote set-url origin git@github.com-personal:ユーザー名/リポジトリ名.git動作確認(鍵が通るかチェック)
ssh -T git@github.com-portfolio
ssh -T git@github.com-personal成功すれば
Hi ユーザー名! You've successfully authenticated...補足
確認系コマンド一覧
| 現在のGitユーザー設定 | git config user.namegit config user.email |
| 今のリモートURL(GitHubの場所)を確認 | git remote -v |
| 鍵ファイルが存在するか確認 | ls ~/.ssh/id_ed25519_* |
グローバル設定
git config –global user.email
これが設定されてると、何も指定してないリポジトリは全部この名前になります。
これが原因で、「SSH分割したのに違う名前でコミットされてる」という現象が起きました。
id_ed25519_とは?
SSH鍵のファイル名にある ed25519 は、「ED25519形式の鍵」という意味です。
ed25519 は暗号の方式(アルゴリズム)の名前で、
RSAより速くて短いのに安全性が高い、今のGitHubでも推奨されている方式 です。
- id_ed25519 → 鍵の「種類」をあらわす基本の名前
- id_ed25519_好きな名前 → 自分でつける「区別用の名前」
鍵は何個でも作れるので、後ろの名前は自由につけてOKです。