現在の職場で、会社の GitHub 組織のメンバーになる前に新しい GitHub アカウントを作成し、すべてのプライベート プロジェクト リポジトリにアクセスできるようにするよう求められました。
仕事用のラップトップをロッカーに置いてきたものの、まだ何かをする必要があったため、個人のラップトップで両方の GitHub アカウントを管理する必要性を感じました (誰がワークライフバランスを必要とするのでしょうか?)。)
さらに複雑なことに、私が取り組んでいるプロジェクトは、package.json
の dependencies ブロックで他のプライベート リポジトリを参照しており、npm install
でアクセスする必要があります。
いくつかの試行錯誤の後、最終的に動作させた方法は次のとおりです。
新しい ssh-key を作成し、仕事の GitHub アカウントに追加する
$ ssh-keygen -t rsa -b 4096 -C "my_work_email@my_company.com"
新しい ssh-key を “work_rsa” と名付け、新しく生成した公開鍵ファイル (work_rsa.) をコピーし、その内容を保存します。pub)をコピーして、GitHub のヘルプ ページに記載されているように、仕事の GitHub アカウントの設定ページに貼り付けます。
ssh 設定ファイル ( ~/.ssh/config )を変更する
設定ファイルをテキストエディタで開く (~/.ssh/config になければ作成する)。7998>
# Personal GitHub account
Host github.com
HostName github.com
User git
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa# Work GitHub account
Host github.com-work
HostName github.com
User git
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/work_rsa
作業プロジェクト レポをクローンする (アドレスを少し変えて)
新しい ssh-key を使用して作業プロジェクト レポをクローンするには、レポの ssh アドレスについて少し修正する必要があります。 つまり、アドレスの github.com
の部分を github.com-work
.
に置き換えてください。 GitHub から取得した以下のプライベート リポの ssh アドレスで、
[email protected]:/.git
それを git clone
する前にアドレスをこのように調整する必要があります:
[email protected]:/.git
$ git clone [email protected]:/.git
パッケージを変更する:Modify the package.json を修正してプライベートリポジトリの依存関係をインストールします。
"dependencies": {
"private-module": "git+ssh://[email protected]/.git
...
}
"private-module": "git+ssh://[email protected]/.git
...
}
*It may be necessary to first do a manual install for one of the private modules in terminal:
$ npm install git+ssh://[email protected]/
So that the private repos gets recognized in the ssh known_hosts
and can be accessed during npm installing the project dependencies.
Soft for a private repos into a single of the private module in the terminal:
"dependencies": {
"private-module": "git+ssh://[email protected]/.git
...
}
*It may be necessary to first do a manual install for one of the private modules in terminal:
"dependencies": {
"private-module": "git+ssh://[email protected]/.git
...
}
*Soft for the private module in the terminal:
"dependencies": {
"private-module": "git+ssh://[email protected]/.git
...
}
It is not found the same modification for their repo addresses as step 3 (because it would commit everything for other people working on this project).Q&A.