代替sshキーを使用してgithubに接続するMagit

Jan 12 2021

私は2つのgithubアカウントを持っています–1つは個人用でもう1つは私の仕事用です。ほとんどのリポジトリでは、仕事用アカウントを使用しており、magitは正常に機能します。いくつかの個人的なリポジトリでは、私はこれを持っています.git/config

sshCommand = ssh -i /my/home/directory/.ssh/personal/id_rsa -F /dev/null

これは、などのコマンドラインからはうまく機能しますが、git pushmagitからプッシュしようとすると、次のエラーが発生します。

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でテストしました)

回答

3 jidicula Jan 24 2021 at 09:09

グローバルで使用できる純粋な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]グローバル.gitconfigincludeIf.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-personalgitconfig-workのメール、キー、ユーザー名、プル行動、のようなあなたのコンテキスト固有のconfigsは、メッセージテンプレートなどをコミットして

条件付きインクルードの詳細については、こちらをご覧ください。