代替sshキーを使用してgithubに接続するMagit
私は2つのgithubアカウントを持っています–1つは個人用でもう1つは私の仕事用です。ほとんどのリポジトリでは、仕事用アカウントを使用しており、magitは正常に機能します。いくつかの個人的なリポジトリでは、私はこれを持っています.git/config
:
sshCommand = ssh -i /my/home/directory/.ssh/personal/id_rsa -F /dev/null
これは、などのコマンドラインからはうまく機能しますが、git push
magitからプッシュしようとすると、次のエラーが発生します。
ERROR: Permission to <personalaccount>/unified_docs_switcher.git denied to <workaccount>.
私の仕事用アカウントがエラーメッセージに記載されているので、magitのgitへの接続はの行を無視しているようです.git/config
。
これを認識するためにmagitに追加できる他の構成はありますか?
異なるgithubアカウントを使用するためにmagitに異なる/より良い解決策はありますか?
(編集:ここからMacOSでemacs 27.1 、melpa-stableのmagit 2.90.1でテストし、次にmelpaの20210105.1030でテストしました)
回答
グローバルで使用できる純粋なGitソリューションがあります.gitconfig
-私はinclude.path
デフォルトで個人的なものの設定を使用します:
# .gitconfig
# default user email and key
[include]
path = .gitconfig-personal
そのファイルには、名前、個人の電子メール(SSHとGitHubアカウントの識別に使用されます)、およびGPGキーIDが含まれています。
# .gitconfig-personal
[user]
name = jidicula
email = "[email protected]"
signingkey = "<personalKeyID>"
次に、その下の最初の[include]
グローバル.gitconfig
でincludeIf.path
、リポジトリが引数として提供されたパターンと一致する場合に使用する作業構成がありますincludeIf
。
# .gitconfig
# When working with Work
[includeIf "gitdir:**/work/**/.git"]
path = .gitconfig-work
そのファイルには、名前、仕事用メール、仕事用メールのGPGキーIDが含まれています。
# .gitconfig-work
[user]
name = jidicula
email = "[email protected]"
signingkey = "<workKeyID>"
この2番目の構成のすべてが、デフォルトで定義されたものを上書きします-条件付きと組み合わせて、includeIf
パスに依存するGit構成を取得します。
グローバルを.gitconfig
すべてまとめると、次のようになります。
# .gitconfig
# default user email and key
[include]
path = .gitconfig-personal
# When working with Work
[includeIf "gitdir:**/work/**/.git"]
path = .gitconfig-work
その後、記入したい.gitconfig-personal
とgitconfig-work
のメール、キー、ユーザー名、プル行動、のようなあなたのコンテキスト固有のconfigsは、メッセージテンプレートなどをコミットして
条件付きインクルードの詳細については、こちらをご覧ください。