別のGitHubアカウントのリモートレポジトリへプレイベートレポジトリをプッシュする方法
Git初心者なので間違いあるかもですが、備忘録です。
自分用のメモを兼ねているので冗長ですが丁寧に手順を追っていきます。
- はじめに
- 動作環境
- 1. SSHキーを個人アカウントに登録
- 2. 対象レポジトリをクローン
- 3. プッシュ先のレポジトリを作成
- 4 ローカルレポジトリからリモートレポジトリを作成
- 5 リモートレポジトリをプッシュ
はじめに
個人アカウントのプライベートレポジトリを訳あって、社内で共有したいということがありました。
レポジトリ内部には公開できない内容も含まれているためパブリックにするわけにはいかず、コミット履歴も含みたいため社内で新規レポジトリとして作成するのも候補から外れました。
社内全体で共有したかったため、Collaboratorsも選択肢から外れました。
ローカルレポジトリから新たにリモートレポジトリを作成して、別アカウントのリモートレポジトリへプッシュする方法を知り、この方法で解決しました。
以下では2つのGitHubアカウントを個人アカウント
と社内アカウント
として説明を続けます。
動作環境
- Windows 10
1. SSHキーを個人アカウントに登録
社内PCから個人アカウントにアクセスできるようにSSHキーを登録します。
.sshフォルダへ移動
C:\Users\[ここはユーザー名]\.ssh
に移動します。
.sshフォルダが無ければ作成します。
SSHキーを作成
コマンドプロンプトを起動して、以下のコードでSSHキーを作成します。
file_name
には任意のファイル名を入力します。
ssh-keygen -t rsa -f file_name
パスワードの設定を促されるためEnterキーを2度押して、作成を完了させます。
例えば、file_nameをhome_key
とした場合は以下の2つのファイルが作成されます。
- home_key
- home_key.pub
公開鍵のhome_key.pub
をテキストエディタで開いて、Ctrl + A
で全選択してコピーしてGitHubに登録します。
GitHubページでのSSHキー登録先は以下の手順で辿り着けます。
1. GitHubページ右上のアイコンをクリック
2. Settings
3. 画面左メニューのSSH and GPG Keys
4. 画面右上のNew SSH key
Titleには識別しやすいよう任意の名前を入力し、keyの欄に先ほど作成して中身をコピーした公開鍵を貼り付けます。
Add SSH key
をクリックして登録完了です。
configファイルを作成
以下のようにconfigファイルを作成します。
既に作成済みであれば、configファイルは.sshフォルダ内にあります。
SSHキーは以下で作成したものとします。
- 社内アカウント:
work_key
- 個人アカウント:
home_key
HostNameは以下で作成することにします。
- 社内アカウント:
github.com
- 個人アカウント:
github.com.home
Host github.com HostName github.com User git IdentityFile ~/.ssh/work_key Host github.com.home HostName github.com User git IdentityFile ~/.ssh/home_key TCPKeepAlive yes IdentitiesOnly yes
2. 対象レポジトリをクローン
対象レポジトリのSSHのURLはgit@github.com:[アカウント名/レポジトリ名].git
になっていますが、github.com
のところをgithub.com.home
に置き換えます。
git clone git@github.com.home:[個人アカウント名/ローカルレポジトリ名].git
configのHostNameを置き換える点が重要です。
今回は、「個人→社内」 でしたが、「社内→個人」 の場合でも適切に置き換えれば逆のパターンも対応可能です。
その場合は後述の`remote add`コマンド実行時もHostNameを適切に置き換えます。
3. プッシュ先のレポジトリを作成
社内アカウントでプレイベートなレポジトリを任意の名前で作成しておきます。
4 ローカルレポジトリからリモートレポジトリを作成
クローンしたプロジェクト直下に移動して下記コマンドを実行します。
リモートレポジトリ名
には「3. プッシュ先のレポジトリを作成」で作成したレポジトリ名を入力します。
remote_repo
には任意の名前を入力します。
git remote add remote_repo git@github.com:[社内アカウント名/リモートレポジトリ名].git
5 リモートレポジトリをプッシュ
remote_repo
は「#4 ローカルレポジトリからリモートレポジトリを作成」でremote_repoに指定した名前を使います。
--all
をつけるとmasterブランチだけでなく、全ブランチをプッシュしてくれます。
git push remote_repo --all
これでコミット履歴も含めて、個人のレポジトリを社内で共有することが出来ました。