여러 GitHub 계정을 설정하는 것이 더 나은 방법

본문은 최초로 우리의 UncaughtException 블로그에 발표되었다.본문을 this link에 따라 읽으세요.
표지 사진은 Brina Blum에서 Unsplash으로 발송되었다.
나는 이전에 여러 개의 GitLab 계정을 설정하는 것에 관한 글을 쓴 적이 있는데, 주로 SSH 프로필에 의존하고, 사용자 정의 호스트를 git 저장소의 원격 장치로 사용한다.Setting up multiple GitLab accounts
이전 설정은 유효했지만 클론 저장소나git Remote 를 복제할 때 사용자 지정 호스트를 항상 사용해야 하는 것이 불편했습니다. 예를 들어:
$ git clone [email protected]:work/repository.git
나는 최근에 (거의) 같은 장면을 GitHub에서 처리해야 했다. 이번에는 (제목 때문에) 더 좋은 설정을 할 수 있는지 확인하기로 결정했다.사실은 더 좋은 방법이 있다는 것을 증명한다 — 사용자 지정 호스트에 의존하거나 SSH 구성 파일을 수정하지 않는 서버.
본고에서 우리는 두 개의 GitHub 계정이 있다고 가정할 것이다. 그것이 바로 [email protected][email protected]이다.업무와 관련된 프로젝트를 처리할 때, 우리는 우리의 업무 계정을 사용하여 우리의 변경을 제출하고 추진하며, 동시에 우리의 개인 계정을 사용하여 기타 모든 일을 처리하기를 희망한다.
Google은 Google 개인 계정을 사용하도록 전역 설정을 정의했다고 가정할 것입니다.이 방법은 this guide 을 참조하십시오.

각 사용자에 대한 SSH 키 생성
GitHub에서는 여러 계정에서 동일한 SSH 키를 사용할 수 없으므로 각 계정에 대해 별도의 키를 만들어야 합니다.GitHub 문서의 this guide에 따라 SSH 키를 만들어 SSH 에이전트에 추가할 수 있습니다.
완료되면 다음과 같은 두 개의 SSH 키 세트가 제공됩니다.
  • ~/.ssh/id_rsa~/.ssh/id_rsa.pub(개인 계정에 사용 가능)
  • ~/.ssh/work_key~/.ssh/work_key.pub
  • 해당 GitHub 계정에 SSH 키를 추가합니다.This guide은 이를 어떻게 하는지 보여줍니다.

    올바른 사용자로 제출
    그리고 업무와 관련된 저장소에 있을 때, 우리는 ~/.gitconfig 파일을 수정하여 우리의 업무 계정을 사용합니다.특정 조건에 따라 구성을 동적으로 추가/제거하는 Conditional Includes을 사용합니다.~/.gitconfig 파일에 다음 코드 세그먼트를 추가합니다.
    [includeIf "gitdir:/path/to/work/repository/"]
        [user]
            email = "[email protected]"
    
    이것은git가 전역 설정을 덮어쓰고 작업 저장소에서 변경 사항을 제출할 때 [email protected]을 사용할 수 있도록 합니다.다른 저장소에서는 개인 계정을 사용합니다.

    모든 작업 저장소에서 이 작업을 수행합니다.
    개인적으로 파일 시스템에 저장소를 구축하는 방식은 작업과 관련된 모든 저장소를 ~/work 디렉토리에 두는 것입니다.이렇게 하면 includeIf 명령의 작업 디렉토리만 사용하여 작업과 관련된 모든 저장소에 이러한 구성을 쉽게 설정할 수 있습니다.
    [includeIf "gitdir:~/work/"]
    

    올바른 사용자로 푸시
    우리가 지금 제출을 전송할 때, 그것들은 우리의 업무 전자메일로 제출했음에도 불구하고 개인 GitHub 계정으로 전송될 것입니다.이는 배후에서 git는 SSH를 사용하고 SSH는 기본적으로 id_rsa 키를 사용하기 때문이다.따라서 GitHub이 Push를 받을 때, GitHub은 사용하는 SSH 키에 따라 어떤 사용자가 Push를 받았는지 확인하려고 합니다. 이것은 우리의 개인 계정임을 증명합니다.
    이 문제는 작업 저장소로 푸시할 때 work_key SSH 키를 사용하여 해결할 수 있습니다.SSH에서는 다음과 같이 -i 플래그를 통해 이 작업을 수행할 수 있습니다.
    $ ssh -i ~/.ssh/work_key ...
    
    core.sshCommand을 설정하면 위의 사용자 정의 SSH 명령을 사용하도록 git를 구성할 수 있습니다.모든 작업 저장소에 설치하고 싶으므로 includeIf 명령에 포함할 수 있습니다.
    [includeIf "gitdir:/path/to/work/repository/"]
        [user]
            email = "[email protected]"
        [core]
            sshCommand = "ssh -i ~/.ssh/work_key"
    
    이 설정들은 현재 GitHub에서 Git 제출을 하고, 전송할 때 GitHub가 GitHub에 제출할 수 있도록 합니다.🎉.

    요약
    Google은 제출할 때 서로 다른 설정을 사용하도록 git를 성공적으로 설정했고, 이 제출을 전송할 때 서로 다른 GitHub 계정에 연결했습니다. 이것은 변경된 저장소에 달려 있습니다. — 우리는git의 프로필에 조건을 포함해서 이 점을 실현했다.
    the previous setup과 비교하면, 나는 이런 방식을 더욱 좋아한다. 왜냐하면 사용하기에 더욱 편리하기 때문이다. (사용자 정의 호스트가 더 이상 없고, 모든 설정 변경은git에만 영향을 미치기 때문이다. (SSH 프로필을 더 이상 변경하지 않기).
    여러 GitHub 계정을 서로 다른 방식으로 처리하신다면 언제든지 저희와 방법을 공유해 주십시오!

    좋은 웹페이지 즐겨찾기