1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Git】(メモ)複数のGitアカウントを使い分ける場合

Posted at

この記事を読んで欲しい人

  • 複数のGitアカウントを使い分けたい
  • 仕事用(メイン用)とプライベート用(サブ用)で使い分けたい

今回やったこと

  • Macのターミナルで使用しているシェルであるzshの設定ファイルである./zshrcに、local.user/emailを設定するシェルスクリプトを記載
  • sshキーを使い分けて、それぞれのアカウントのリポジトリへアクセス

手順

1. keyの作成

  • メイン用とサブ用で使用するGitユーザー用をそれぞれ作成する
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):{好きな名前
}

2. それぞれのGitアカウントに鍵登録

  • 先ほど作成した公開鍵をコピー
    • Mac:$ pbcopy < ~/.ssh/{作成時の鍵名前}.pub
    • Windows:$ clip < ~/.ssh/{作成時の鍵名前}.pub
  • git鍵設定画面でコピーしたものを貼り付けて、好きな名前で登録

CleanShot 2024-12-14 at 10.03.27@2x.png

3. ~/.ssh/configを記載(ない場合は作成して記載)

例:

# メイン用
Host github github.com
  HostName github.com
  User {メイン用のユーザー名}
  IdentityFile ~/.ssh/{メイン用のkeyname}

# サブ用
Host tiga-ga
  HostName github.com
  User {サブ用のユーザー名}
  IdentityFile ~/.ssh/{サブ用のkeyname}

4. 接続確認

例:

$ ssh -T git@github
Hi {メインユーザー名}! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T git@github.com
Hi {メインユーザー名}! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T git@tiga-ga
Hi {サブユーザー名}! You've successfully authenticated, but GitHub does not provide shell access.

5. zshの設定ファイルである./zshrcを更新

※zsh使っていない方は別のシェルの設定ファイルでも問題ないです!

vi ~/.zshrcで編集

# メイン用(メインはglobalで設定)
function gitmain() {
  git config --global user.name "{メインgitユーザー名}"
  git config --global user.email "{メインgitメールアドレス}"
}
# サブ用(サブはlocalで設定)
function gitsub() {
  git config --local user.name "{サブgitユーザー名}"
  git config --local user.email "{サブgitメールアドレス}"
}

source ~/.zshrcで再読み込み

6.リポジトリクローン

リポジトリクローンする時は、SSH用のURL?をコピーしておく
CleanShot 2024-12-14 at 11.07.00@2x.png

メイン用のリポジトリをクローンする時

git clone {コピーしたもの}
詳しく書くと、
git clone git@{メイン用のHost}:{ユーザー名}/{リポジトリ名}.git
上記手順の~/.ssh/configの場合、
git clone git@github.com:{ユーザー名}/{リポジトリ名}.git

※~/.ssh/config記載時にメイン用のHostをHost github github.comではなく、他の名前にした場合は、コピーしたものを編集してからクローンする必要あり

サブ用のリポジトリをクローンする時

git clone git@{サブ用のHost}:{ユーザー名}/{リポジトリ名}.git
上記手順の~/.ssh/configの場合、
git clone git@tiga-ga:{ユーザー名}/{リポジトリ名}.git

7. プッシュしてみる

  • (ホームディレクトリで1回だけ実行)まずは、gitのconfig情報(user.nameとuser.email)のglobal設定をするために、gitmainを実行する
    ※リポジトリごとに毎回実行する必要はなく、一回だけ打てば良い。だったらzshrcに書く必要がないかも、、
  • $ gitmainを実行

このように設定されていればOK!

$ git config -l
...
user.name={メイン用ユーザー名}
user.email={メイン用メールアドレス}
...
remote.origin.url=git@{メイン用HostID}:{メインユーザー名}/{リポジトリ名}.git
...

メイン用のリポジトリの場合

  • cd {クローンしたリポジトリ}で移動して、そのまま変更してpushすればOK

サブ用のリポジトリの場合

  • cd {クローンしたリポジトリ}で移動
  • (リポジトリごとに毎回実行)gitのconfig情報(user.nameとuser.email)のlocal設定をするために、$ gitsubを実行

このように設定されていればOK!

$ git config -l
...
user.name={メイン用ユーザー名} ※global
user.email={メイン用メールアドレス} ※global
...
remote.origin.url=git@{サブ用HostID}:{サブ用ユーザー名}/{リポジトリ名}.git
...
user.name={サブ用ユーザー名} ※local
user.email={サブ用メールアドレス} ※local

この場合、globalよりlocalの方が優先されるため、そのまま変更してpushすればOK

以下のブログは、gitconfigについて理解したい方におすすめです!

参考)[Git]これだけ押さえる!gitconfigの基本

まとめ

複数のGitアカウントを管理したい方のお役に立てればと思います!!

警告
ここまでSSH接続でGitリポジトリへ操作する方法をご紹介しましたが、鍵がハードディスク上のユーザアクセスが可能なファイルとして保存されることが欠点。
SSHキーの管理は気をつけましょう。
参考)【解説】【GitHub】HTTPSとSSHの違い

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?