GitHub + SSH で複数アカウント切替え

Git HTTPS Credential Helper がややこしいので SSH に切り替える。

GitHub リポジトリを指す remote origin の変更が必要となりますので、ざっくり概要を見ておきます。


# HTTPS 利用していたとする
git remote -v
> origin https://github.com/OWNER/REPOSITORY.git (fetch)
> origin https://github.com/OWNER/REPOSITORY.git (push)

# SSH 形式の URL に変更
git remote set-url origin [email protected]:OWNER/REPOSITORY.git

# 確認
git remote -v
# Verify new remote URL
> origin [email protected]:OWNER/REPOSITORY.git (fetch)
> origin [email protected]:OWNER/REPOSITORY.git (push)

👉 リモートリポジトリを管理する - GitHub Docs

🧑🏻‍💻 手順

1. 鍵をPC側で作成。


❯ ssh-keygen -t ed25519 -C [email protected] -f ~/.ssh/id_ed25519_main

👉 新しい SSH キーを生成して ssh-agent に追加する - GitHub Docs

2. GitHub にログインして貼る。Authentication keys


❯ pbcopy < ~/.ssh/id_ed25519_main.pub

👉 SSH and GPG keys - GitHub

3. ~/.ssh/config を設定する。


❯ vi ~/.ssh/config

Host github-main
  HostName github.com
  User git
  Port 22
  IdentityFile ~/.ssh/id_ed25519_main
  TCPKeepAlive yes
  IdentitiesOnly yes # need for multiple accounts

Host github-sub
  HostName github.com
  User git
  Port 22
  IdentityFile ~/.ssh/id_ed25519_sub
  TCPKeepAlive yes
  IdentitiesOnly yes # need for multiple accounts

4. PC側プロジェクト内で remote origin を書き換える。


git@github-main:your-main/Sample.git


❯ git remote -v
origin https://github.com/your-main/Sample.git (fetch)
origin https://github.com/your-main/Sample.git (push)

❯ git remote set-url origin git@github-main:your-main/Sample.git

❯ git remote -v
origin git@github-main:your-main/Sample.git (fetch)
origin git@github-main:your-main/Sample.git  (push)

❯ cat .git/config
[remote "origin"]
url = git@github-main:your-main/Sample.git
fetch = +refs/heads/*:refs/remotes/origin/*

5. 接続を確認する。


❯ ssh -T git@github-main
Hi your-main! You've successfully authenticated, but GitHub does not provide shell access.

👉 [備忘] 複数Githubアカウントでssh接続設定(config)を使い分ける手順 #GitHub - Qiita

 

🧑🏻‍💻 まとめ

URL 記述部分は、ssh:// がついてるほうが意味が分かりやすい気がします。

その場合は ~/.ssh/config の port 22 の記述は不要のようですが、

現在 GitHub ではスキーマ部分消えています。

などとダラダラ書きましたが、以下読んでみるとよく分かります。

👉 Multiple GitHub Accounts & SSH Config - Stack Overflow
👉 Using multiple github accounts with ssh keys
👉 【Git】Obsidian を GitHub と連携する
👉 初心者向け Git コマンドと領域の移動をシーケンス図で書いてみた


【Apple】iPhone に着信する SMS のメッセージを Mac で受ける

2FA などいちいち iPhone を手にとって見るのが面倒すぎる。

iPhone 側の


[設定] - [アプリ] - [メッセージ]

から。

表示される転送先 Mac を ON に。

Apple ID で紐付いてるんだって。


Android Studio キャッシュの種類とそれぞれのクリーンの操作

ビルド速度が遅いので、


org.gradle.caching=true

としたら、署名付きビルドが更新されない。

「キャッシュ」のせいなのは分かるが、

いろいろ種類がありそうだよな、

Android Studio の「キャッシュ」って。

 

🤔 キャッシュの種類

ChatGPT に聞くと、3つあるそうです。

もちろん信用はしてないです。

IDE キャッシュ
コード補完、シンタックスハイライト、プロジェクトインデックス、ビルド設定など

Gradle キャッシュ
依存ライブラリ、ビルドキャッシュ(Gradleがダウンロードしたファイルなど)

ビルドキャッシュ
build/ フォルダ内の成果物やコンパイル済みファイルなど

そして、今回の調べるきっかけとなった


org.gradle.caching=true

は「ビルドキャッシュ」のようです。

 

🤔 まとめ

いきなり、分かったことをまとめます。


org.gradle.caching=true

は、ビルドキャッシュ。

キャッシュの範囲は、


ビルドキャッシュ < Gradle キャッシュ < IDE キャッシュ

のようなので、

キャッシュを消したいときは、


[Build] - [Clean Project]


[Build] - [Rebuild Project]


./gradlew clean


rm -rf ~/.gradle/caches


[File] → [Invalidate Caches / Restart]


rm -rf ~/.gradle

を上から順番に試していくのがいいと思います。

もちろん信用はしてません。

公式読むと良いです。

👉 Build Cache - docs.gradle.org

 

🧑🏻‍💻 おまけ

今回のような場合、

Gradle タスクに追加しておく方法もあるらしい。


tasks.withType(Sign).configureEach {
    outputs.cacheIf { false }
}

記述場所としては、

基本的に、android {} の外、末尾に記述する。

マルチモジュールなら subprojects {} 内に。