GitHubアカウントを複数使いする
普段個人アカウントを使っているが、急遽別のアドレスでGithubアカウント作らないといけなくなったよ!!という時にどうぞ。
アカウント準備編
まずアカウントを作成しておく。
既存アカウントはログアウトしていても問題ない。
お好みだが、すでに既存アカウントでログインしているのであれば
別ブラウザでGithubに入り新規アカウントを作るのもあり。(後で2つのアカウント使うので)
既存アカウントページを開く
手順はこちら
アカウントページで右上にある自分の丸アイコンを押してメニューを開く。
Switch accountのどこーって探してたら右上の方にひっそりとあった。
ここを押すと「Add」が出てくるのでクリックするとログイン画面に飛ぶ。
ここに新しく作ったアカウントの情報を入れる。
新しいアカウントでログインできるので同じ要領でスイッチマークを押すと既存アカウントに戻れる。
これでGithub側はOK。
新規アカウントの設定
新規アカウントで自分で作ったリポジトリの作成・クローンは問題なくできる(はず)だが、別のリポジトリをクローンする場合、他にも設定が必要になる。
確認項目
- リポジトリに紐づくアカウント管理
- コミットの設定(ユーザー名・メールアドレス)
- SSHキーの管理
- 認証情報のキャッシュ
別リポジトリのクローン
クローンした際にでたエラー
リポジトリのURLが間違っている可能性もあるが、何も設定せずにクローンしようとするとこんな感じの内容が出るのでSSHキーを設定する必要がある。
An unexpected error occurred while performing the git request.
Cloning into 'クローン先のディレクトリパス'
warning: templates not found in 'テンプレート'
remote: Repository not found.
fatal:repository 'リポジトリ名' not found
SSHキーの確認
①ローカルでSSHキーが登録されているかを確認:ls ~/.ssh
②ここにid_rsa
かid_ed25519
があれなSSHキーが存在していることになる
私の場合id_rsaはすでにあり、GithubにSSHキーを登録してみたけれど同じエラーが出たのでid_ed25519
を作ることにした。
③SSHキーを作る:ssh-keygen -t ed25519 -C "ここにGithubに登録しているメルアド"
④SSHキーをコピーする:pbcopy < ~/.ssh/id_ed25519.pub
⑤Github側にSSHキーを登録(https://github.com/settings/keys)
⑥登録後ssh -T git@github.com
で確認をする
この手順は複数アカウントでも初めて設定するときも変わらない認識。
SSHキーの作り方やGithubの登録までは以下の記事を参考に。
SSHキー登録までの詰まった部分
SSHキーを作成〜登録までの流れで詰まった部分がある。
ざっと確認ポイントをまとめると以下のような感じ。
①SSHキーが本当にあるか、登録しようとしているものに綴りミスがないかを確認
②SSHエージェントにキーが追加されていない
③アカウントごとにホスト名をconfigに設定していない
④キーの権限が関係している
SSHキーの設定やGithubとの認証がうまくできていない
ssh -T git@github.com
git@github.com: Permission denied (publickey).
というエラーが出てきた場合
SSHキーの設定やGithubとの認証がうまくできていないということになる。
Cloning into 'repository'...
no such identity: /Users/名前/.ssh/SSHキーのファイル名: No such file or directory
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
このエラーの場合はSSHキーが存在していないがために認証が失敗したという状態。
作成したキーのSSHエージェントの追加
「SSHキーの確認」で記載した③の部分。
キーを作成しコピー、Githubに貼り付けるだけではダメだったのでキーを作成したらSSHエージェントに追加するコマンドを実行してからGithubに設定します。
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/SSHキーのファイル名
アカウントごとにホストをconfigに設定する
GithubにSSHキー登録後でも前でもタイミングはお任せ。
アカウント複数使いする場合はconfigの設定も大事。
~/.ssh/config
の
Host ここは任意のホスト名をつけます
HostName github.com
User git
IdentityFile ~/.ssh/SSHキーのファイル名
configに記述を追加、次の手順を踏み、任意のホスト名でアクセスできるようにする
git clone git@ホスト名:ユーザー名/リポジトリ.git
この時にfatal: remote error:
が出るとホスト名:ユーザー名/リポジトリ.git
のどこかに記述ミスがある可能性がある。
なお、いつもクローンする際はForkGitを使っておりGithubのhttpsでクローンしているが今回は
fetchやPullができない
クローンできたのも束の間でPullをしようとしたら
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
In a case you entered incorrect password, please
update it in Keychain Access application.
が出た。
原因はリポジトリのリモート設定がgithub.comのデフォルトホストを使用しているからだそうで、ここをコンフィグに追加したホスト経由にする必要がある。
まずリポジトリのリモートURLを確認する:git remote -v
origin git@github.com:ユーザー名/リポジトリ名.git (fetch)
origin git@github.com:ユーザー名/リポジトリ名.git (push)
こんな感じに出る。
git@github.comになっている場合はデフォルトホストのままなのでリモートURLを修正する。
git remote set-url origin git@ホスト名:ユーザー名/リポジトリ.git
改めてgit remote -v
を実行し
origin git@ホスト名:ユーザー名/リポジトリ名.git (fetch)
origin git@ホスト名:ユーザー名/リポジトリ名.git (push)
のようにconfigに設定したホスト名になっていたらOK。
余談
リモートリポジトリを確認したところ出てきたこのエラーは
単純に実行したディレクトリが違う部分だったため出ただけでした。
git remote -v
fatal: not a git repository (or any of the parent directories): .git
参照
Discussion