【GitHub】ローカルリポジトリを、異なるアカウントにあるリモートリポジトリにpushなどをする方法
1つのローカルリポジトリを、異なるアカウントにあるリモートリポジトリにpushするための、メモ。
状況
サブアカウントとして、2つ目のGitHubアカウントを作り
ローカルリポジトリを、メインアカウントとサブアカウントの両方にpushなどをしたいと思った。
やり方
Step1
まず、サブアカウントにSSH接続をするために、ローカル環境でサブアカウント用の鍵を作成します。
$ cd ~/.ssh $ ssh-keygen -t rsa -C 【GitHubメールアドレス】 -f 【作成する鍵の名前】 Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again:
ssh-keygenでサブアカウントに登録したメールアドレスと、作成する鍵の名前を入力しEnter。
その後、パスフレーズの入力を2回行います。
入力後、秘密鍵と公開鍵が作成されるのでkeyの内容を
pbcopy < ~/.ssh/id_rsa.pub
でクリップボードにコピーします。
Step2
GitHubで作成した公開鍵を登録します。
GitHubにログインし、右上隅のアイコンから[Settings] -> Access欄の [SSH and GPG keys] -> [New SSH key]をクリックして、公開鍵を登録。(公式の解説記事はこちらです。)
Step3
次にSSH設定ファイルの編集を行います。
SSH設定ファイル(~/.ssh/config)に該当箇所を以下の内容を書き変えて、アカウントごとにSSH鍵を使い分けられるようにします。
Host github.com.main # メインアカウント HostName github.com User git Port 22 IdentityFile ~/.ssh/id_rsa_main # メインアカウント用の鍵 TCPKeepAlive yes IdentitiesOnly yes Host github.com.sub # サブアカウント HostName github.com User git IdentityFile ~/.ssh/id_rsa_sub # サブアカウント用の鍵 TCPKeepAlive yes IdentitiesOnly yes
Step4
remote addを使ってローカルリポジトリに複数のリモートリポジトリを登録します。
リモートリポジトリの確認
現在のリモートリポジトリを確認するコマンド
git remote -v origin git@github.com:redamoon/hogehoge.git (fetch) origin git@github.com:redamoon/hogehoge.git (push)
サブアカウントのリポジトリを登録する
git remote add sub git@github.com:redamoon/foofoo.git
subはラベル名で、これは好きな名前をつけることができます。
git remoteをすると、subという名前でリモートリポジトリが表示されます。
git remote -v origin git@github.com:redamoon/hogehoge.git (fetch) origin git@github.com:redamoon/hogehoge.git (push) sub git@github.com:redamoon/foofoo.git (fetch) sub git@github.com:redamoon/foofoo.git (push)
それぞれのリポジトリへPushする
originのリポジトリへPushしたい場合
git push origin main
subのリポジトリへPushしたい場合
git push sub main
これで、2つのリモートリポジトリにPushができるようになります。
参考 qiita.com
【Mac】MPIの環境構築と実行
MacでMPIを使うために結構調べて時間がかかったので、メモとして残しておこうと思います。
使用したPC
OS : macOS Monterey 12.5.1
プロセッサ : 3.2 GHz 6コアIntel Core i7
環境構築
MacでHomebrewを使っているなら、
brew install openmpi
でインストールが可能です。
実行
下のサンプルコードhello.cを作成し、
#include <stdio.h> #include <mpi.h> #define MSIZE 64 int main(int argc, char **argv){ char msg[MSIZE]; int rank; /* カレントプロセスのランク */ int nproc; /* プロセスの数 */ MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if(rank == 0){ for(int i = 1; i < nproc; i++){ MPI_Recv(msg, MSIZE, MPI_CHAR, i, 0, MPI_COMM_WORLD, &status); fputs(msg, stdout); } }else{ sprintf(msg, "Hello world! My process is #%d\n", rank); MPI_Send(msg, MSIZE, MPI_CHAR, 0, 0, MPI_COMM_WORLD); } MPI_Finalize(); return 0; }
以下のようにコンパイルし、
$ mpicc -o hello hello.c
-npでプロセス数を指定して実行し、出力結果のように表示されればOKです。
$ mpirun -np 3 ./hello Hello world! My process is #1 Hello world! My process is #2