Magit이 대체 SSH 키로 github에 연결

Jan 12 2021

두 개의 github 계정이 있습니다. 하나는 개인용이고 다른 하나는 제 직업 용입니다. 대부분의 리포지토리에서 직장 계정을 사용하고 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에 추가 할 수있는 다른 구성이 있습니까?

magit에 다른 github 계정을 사용하는 다른 / 더 나은 솔루션이 있습니까?

(편집 : 여기 에서 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]내 세계에서 .gitconfig, 나는이 includeIf.path의 repo는 인수로 제공되는 패턴과 일치하는 경우에 사용하는 작업 설정을 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>"

이 두 번째 구성의 모든 항목은 기본적으로 정의 된 모든 항목을 덮어 씁니다. 조건부와 쌍을 이루면 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는 메시지 템플릿 등을 커밋

여기에서 조건부 포함에 대해 자세히 알아볼 수 있습니다 .