これは私の現在の設定と非常によく似ています。すでにセパレートを設定しているssh-keys
ようですので、~/.ssh/config
ファイルを作成して、次のような情報を入力する必要があります。
Host work.github.com
HostName github.com
User WORK_GITHUB_USERNAME
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_rsa
IdentitiesOnly yes
Host personal.github.com
HostName github.com
User PERSONAL_GITHUB_USERNAME
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_personal_rsa
IdentitiesOnly yes
すべてのプロパティはかなり自明に聞こえますが、IdentitiesOnly
1つです。それが何のためにあるのかを説明しようとはしませんが、それは私の現在の設定にあり、正常に機能します。
また、これHost URL
は正しいユーザー設定を取得するための単なるポインターであり、ファイルをターゲットHostName
URLに正しく取得することには影響しないことにも注意してください。
ここで、ユーザー名に応じて、origin
(またはremote
一般的な)URLがHost
それぞれのリポジトリの正しいURLと一致することを確認する必要があります。既存の個人リポジトリがある場合は.git/config
、テキストエディタでそのリポジトリのファイルを編集できます。
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
またはコマンドラインから実行します。
git remote set-url origin git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git
あなたの仕事と同じように:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@work.github.com:your_work_organization/project.git
または、コマンドラインから:
git remote set-url origin git@work.github.com:your_work_organization/project.git
もちろん、ファイル内のHost
URLの1つを~/.ssh/config
Host github.com
以前work.github.com
は、構成の関係を簡単に確認するために使用していました。
これらがすべて設定されると、それぞれのリモコンにプッシュできるようになります。
編集
私が気付いたのは、値にグローバルgit config値を設定したuser.email
場合(そしてuser.name
、別の値も送信されると思います)、gitはそのメールユーザーとしてコミットを表示することです。これを回避するには、ローカルリポジトリ内のグローバルgitconfig設定をオーバーライドします。
$ git config user.name "John Doe"
$ git config user.email johndoe@example.com
これで、そのリポジトリの正しいユーザーとしてコミットが送信されます。