概要
会社と個人など、別々のgitアカウントを1台のPCで利用する方法メモ
gitのアカウントをglobalに適当に設定して利用すると、会社のリモートリポジトリに間違えて個人のgitアカウントでpushしたりして事故ることがあるのでそれを回避したい
今回は、新しいPCに2つのPJをgit clone
することを目的としています
結論
gitの設定をglobalにせずに、プロジェクト毎にlocal設定する
参考
-
複数のGitアカウントを手動切替不要で運用する
- 詳しく書いてあるのでちゃんと理解したい人向け
- おまけで必須ではないが、便利になるスクリプトやオプション設定もあり
-
複数 git アカウントを1台のPCで使い分ける方法
- 上記の方は少々上級者向けだが、こちらの方は少し優し目
- 上記の方と手法が微妙に違うため別の角度からの参考
-
お前らのSSH Keysの作り方は間違っている
- sshキーの作り方詳細
手順
ざっくりとした手順
- [local] .sshディレクトリを作成
- [local] ssh keyをローカルで生成
- [local] .ssh/configにHost情報を設定記述
- [web] ssh keyを登録
- [local] git clone
- [local] local config設定
※ [local]と書いてるのは、lcoalで作業を行い、[web]と書いてるのはgithubの公式サイトにログインして作業を行うという意味
詳細手順
1. [local] ssh keyをローカルで生成
まずは、.sshファイルをユーザーディレクトリ直下に作成して移動
cd && mkdir .ssh && cd ~/.ssh
2. [local] ssh keyをローカルで生成
雛形は下記で、"メールアドレス"と"sshkeyを識別するID"は任意で入力
ssh-keygen -t ed25519 -C "{メールアドレス}" -f {sshkeyを識別するID}
実際の例
ssh-keygen -t ed25519 -C "boku-doraemon@gmail.com" -f id_ed25519_github_pj_dora
3. [local] .ssh/configにHost情報を設定記述
configファイルを生成して、Host情報を記述
touch config && vi config
Host {任意のホスト名}
HostName github.com
User git
IdentityFile ~/.ssh/{手順2で作成したsshkeyの名前}
IdentitiesOnly yes
UseKeychain yes
AddKeysToAgent yes
実際の例
Host github_pj_dora
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github_pj_dora
IdentitiesOnly yes
UseKeychain yes
AddKeysToAgent yes
上記を記入したら、エスケープ押して:wq
でvimを閉じる。 viみたいなのがよう分からん人は下記参考
4. [web] ssh keyを登録
githubの公式サイトへいってローカルでこしらえたsshkeyを登録
下記でsshkeyをクリップボードへコピー
pbcopy < ~/.ssh/id_ed25519_github_pj_dora.pub
- githubにログインして、アカウントの設定ページアクセス
- 左側メニューの"SSH and GPG keys"をクリック
- 右上の"New SSH key"をクリック
- keyにさっきコピーしたssh keyを貼り付け
- "Add SHH key"で完了
※ 名前はいい感じに自動で生成される
5. [local] git clone
githubプロジェクトのsshのcloneリンクをコピーして、ローカルのプロジェクトを管理したいディレクトリに行ってcloneするが、git@github.com
をgithub_pj_dora
のように~/.ssh/config
で設定したhost名に変更する(ココ地味だけど、重要でここを間違えてると一生パーミッションデニードの刑に処される)
# NG
git clone git@github.com:dora.inc/pj-dora.git
# 正しい例
git clone github_pj_dora:dora.inc/pj-dora.git
6. [local] local config設定
最後にcloneしたローカルPJに移動して、local設定を行う。
cd cloned_project
git config --local user.name "gitのアカウント名"
git config --local user.email "gitに登録しているメールアドレス"
# 参考にしている方がしていたのでとりあえずw
git config --local url."github_pj_dora".insteadOf "git@github.com"