같은 컴퓨터에 여러 개의github 계정을 설정합니다 (리셋 URL을 변경할 필요가 없습니다)

6926 단어 gitgithubtutorial
질문:
  • 컴퓨터에서 두 개의 다른github 계정을 사용해야 합니다.
  • 계정을 전환할 때마다 ssh 키를 설정해야 합니다.
  • 리포를 복제할 때마다 리포의 ssh 주소 as suggested by a lot of online tutorials을 편집하기를 원하지 않습니다.
  • 해결 방안: 모든 작업repo를 하나의 폴더에 놓고 ssh 설정을 업데이트하여 서로 다른 ssh 키를 조건부로 사용합니다.다른 모든 것은 기본 ssh 키 (개인 계정) 를 사용합니다.
    Github는 SSH 프로토콜과 RSA 암호 시스템을 사용하여 컴퓨터를 검증합니다.새 SSH 키를 생성하면 두 개의 키 - 개인 키 및 공개 키가 생성됩니다.github 계정에 공개 키를 추가해야 하지만, 개인 키를 컴퓨터에 남겨 두십시오.public-key cryptography here에 대한 더 많은 정보를 읽을 수 있습니다.
    SSH 키를 생성하여 github 계정에 추가한 경우 skip this section입니다.

    SSH 키를 생성하여 github 계정에 추가합니다.


    기존 키 확인
  • 먼저 터미널로 이동하여 ls -al ~/.ssh을 실행하여 시스템에 SSH 키가 있는지 확인합니다.기본적으로 공개 키의 파일 이름은 id_rsa으로 시작하여 .pub으로 끝납니다.
  • 어떤 키가 어느 계정에 속하는지 확인하지 못하고 새 키로 시작하려면 터미널에서 ssh-add -D을 실행하여 키를 삭제할 수 있습니다.수동으로 추가된 키만 삭제되므로 문제가 발생하면 stackoverflow answer을 보십시오.SSH 키가 있는 폴더로 이동해야 합니다. 터미널에서 open ~/.ssh을 실행하고 덮어쓰기 전에 복사본을 저장합니다.
  • 새 키 생성

  • 터미널에서 실행
     ssh-keygen -t rsa -f ~/.ssh/id_rsa -C "[email protected]"
    
    같은 이름의 기존 키를 덮어쓰려면 y을 입력합니다.덮어쓰지 않으려면 n을 입력하고 새 파일 이름으로 위 명령을 다시 입력하십시오.id_rsaid_rsa_PERSONAL과 유사한 다른 내용으로 변경하기만 하면 됩니다.
  • 보안 암호 구문을 입력합니다.이것은 두 개의 개인 키 id_rsa과 공개 키 id_rsa.pub을 생성합니다.
  • 은 터미널에서 id_rsa.pub을 실행하여 공개 키 pbcopy < ~/.ssh/id_rsa.pub을 복사합니다.open ~/.ssh을 실행하고 id_rsa.pub 파일을 코드 편집기로 드래그하고 파일 내용을 복사하여 SSH 키 디렉터리를 열 수도 있습니다.

  • 브라우저에서 오른쪽 상단의 개인 정보 그림을 누르면github 계정의 설정으로 이동합니다.


  • 사용자 설정 사이드바에서 SSH and GPG keys을 클릭합니다.

  • New SSH key 클릭


  • 복사된 공개 키를 키 필드에 붙여넣고 제목을 지정합니다.

  • Add SSH key을 클릭합니다.
  • 상기 절차를 반복하여 두 번째github 계정에 새 키를 생성하고 추가합니다.id_rsa_COMPANY과 같은 다른 이름을 제공해야 합니다.
    이상 코드 구간의

    SSH 구성 설정

  • From terminal, run cd ~/.ssh .
  • Check if a config file exists by running - ls config . If you see ls: config: No such file or directory , create a new config file by running touch config .
  • Open the config file by dragging it into your code editor.
  • Paste the following into the file:

      Host github.com
        HostName github.com
        User git
        IdentitiesOnly yes
        AddKeysToAgent yes
        UseKeychain yes
    
      Match Host github.com !exec "pwd | grep '/COMPANY' > /dev/null"
        IdentityFile ~/.ssh/id_rsa
    
      Match Host github.com exec "pwd | grep '/COMPANY' > /dev/null"
        IdentityFile ~/.ssh/id_rsa_$COMPANY
    
    Source.UseKeychain을 yes로 설정하면 암호 구문이 열쇠고리에 저장되므로 매번 다시 입력할 필요가 없습니다.exec "pwd | grep '/COMPANY' > /dev/null" 현재 폴더가 COMPANY 폴더에 중첩되어 있는지 확인합니다.만약 그렇다면, id_rsa_$COMPANY SSH 키를 사용하고, 그렇지 않으면 기본 SSH 키를 사용합니다.[1]
  • , 그리고 chmod 600 ~/.ssh/config을 실행합니다.
  • 사용자를 설정합니다.이름과 사용자.전자 우편


    이제 SSH 키가 설정되어 사용자를 구성해야 합니다.이름과 사용자.전자 메일 변수.이것은 제출 대상의 author와committer 필드의 결과를 결정합니다.이 옵션을 설정하지 않으면 작업 디렉터리로 전송할 수 있지만, 제출에 작업 이메일과 이름이 포함되기를 원한다면 .gitconfig개의 파일이 설정되어 있습니다.
  • .gitconfig을 실행하여 루트 디렉터리에 기존 ls ~/.gitconfig이 있는지 확인합니다.없으면 touch ~/.gitconfig을 실행하여 하나를 만듭니다.
  • 은 작업 디렉토리에 대해 동일한 작업을 수행합니다.

  • 루트 디렉터리에 .gitconfig을 열고 개인git 사용자 이름과 이메일을 추가합니다.또한 includeIf 경로를 포함하여git가 서로 다른 .gitconfig을 사용하여 작업 환매를 진행하도록 알려줍니다.
    # ~/.gitconfig
    [user]
    email = [email protected]
    name = your-user-name
    [user]
    email = [email protected]
    name = your-user-name
    [includeIf "gitdir:~/PATH/TO/WORK/DIR/RELATIVE/TO/ROOT"]
        path = ~/PATH/TO/WORK/DIR/RELATIVE/TO/ROOT/.gitconfig
    

  • 작업 디렉토리의 .gitconfig에 작업 전자 메일과 작업 사용자 이름을 추가합니다.
    # ~/PATH/TO/WORK/DIR/RELATIVE/TO/ROOT/.gitconfig
    [user]
    email = [email protected]
    name = your-work-user-name
    
  • 현재 SSH에서 이 두git 계정을 사용할 수 있습니다. 제출은 정확한 전자메일과 작성자 이름을 가지고 있습니다.
    [1] 주: exec "pwd | grep '/COMPANY' > /dev/null"의 상세한 분류:pwdprint working directory을 대표한다.|은 왼쪽 명령의 표준 출력을 받아들여 표준 입력으로 오른쪽 명령으로 전송합니다.grep은 일반 텍스트에서 일치하는 항목을 검색합니다.>은 이전 명령의 결과를 오른쪽의 파일로 다시 지정합니다./dev/null은 모든 기록된 데이터가 버려지는 블랙홀입니다./dev/null here에 대한 더 많은 정보를 읽으십시오.
    따라서 이 명령의 기본 뜻은 현재 작업 디렉터리를 가져와 COMPANY 이름을 검색하고 반환 값을 포기하는 것입니다.이 명령의 종료 코드는 어떤 SSH 키를 사용할지 결정합니다.

    좋은 웹페이지 즐겨찾기