【Git】複数Origin、個人・仕事などフォルダー別の設定・切り替え

git Git

概要

開発者は、個人プロジェクトと業務プロジェクトを並行して管理することがあるかと思います。それぞれのリポジトリが異なる場合、以下の課題があるかと思います。手動でするとうっかりすると間違うことがあると思います、ここで自動で切り替える方法を解説したいと思います。

  • 個人のGitアカウントと業務用のアカウントの切り替え
  • SSHキーやアクセストークンの切り替え

前提

Mac環境

my-repository用SSHキーの用意

my-repository用SSHキーの用意

git@github.com:my-repository/my-project.git

git@github.com:work-repository/work-project.git

手動

自動

drienvのインストール

brew install direnv

windowsなどはdirenvインストールを参考してください

sshキーの作成

my repository用SSHキーの作成

my-repository、work-repositoryなどのフォルダーは事前にフォルダーを作成が必要です。

mkdir -p ~/.ssh/my-repository
ssh-keygen -t rsa -f ~/.ssh/my-repository/id_rsa

生成された~/.ssh/my-repository/id_rsa.pubの中身をGithubにログインしSSHキーとして登録します。

work repository用SSHキーの作成

mkdir -p ~/.ssh/work-repository
ssh-keygen -t rsa -f ~/.ssh/work-repository/id_rsa

生成された~/.ssh/work-repository/id_rsa.pubの中身をGithubにログインしSSHキーとして登録します。

.sshフォルダー、.ssh/config編集

.ssh/configを編集してそれぞれのSSHキーを設定します。

Host MY_GIT #任意のホスト名
  HostName github.com
  IdentityFile ~/.ssh/my-repository/id_rsa
  User git
  Port 22
  TCPKeepAlive yes
  IdentitiesOnly yes

Host WORK_GIT #任意のホスト名
  HostName github.com
  IdentityFile ~/.ssh/work-repository/id_rsa
  User git
  Port 22
  TCPKeepAlive yes
  IdentitiesOnly yes

マイプロジェクトでのclonおよびoriginの設定

個人プロジェクトoriginを設定

~/my-project/my-appに個人のプロジェクトがあるなら以下のようにしてoriginを設定できます。

cd ~/my-project/my-app
git remote set-url origin git@MY_GIT:username/my-app.git

ワークプロジェクトoriginを設定

~/work-project/work-appにプロジェクトがあるなら以下のようにしてoriginを設定できます。

cd ~/work-project/work-app
git remote set-url origin git@WORK_GIT:username/work-app.git

clon時に.ssh/configのHostNameを利用する

「new-work-app」というgit管理プロジェクトをclonしたいとき

git clon git@WORK_GIT:username/new-work-app.git

参考

DIRENV User Manuals

ssh-keygen man7.org manual page

タイトルとURLをコピーしました