한 컴퓨터에서 Github 계정 여러개 사용하기

dolanap·2022년 9월 4일
10

❓ 서론

github를 사용할 때 보통 처음에 아래와 같은 명령으로 config를 등록하게 되는데요.

$ git config --global user.name "Name"
$ git config --global user.email you@example.com

이 config는 ~/.gitconfig 에 저장되고 git이 관리하게 됩니다.

여러개의 github 계정을 사용하려면 어떻게 하는게 좋을까요?


저는 ssh-key를 계정마다 생성하고 local project 디렉토리에 git config를 프로젝트에 사용할 계정에 맞게 설정해서 쓰고 있습니다.

(구글링을 많이 해봤는데 이게 젤 편한거 같아요 🧐)



1. 계정별 SSH Key 만들기

  1. ssh 디렉토리로 이동

    $ cd ~/.ssh
  2. github 이메일로 ssh-key 생성
    (명령어 실행 시 암호 입력을 받는데 엔터 2번 쳐서 skip 가능)

    $ ssh-keygen -t rsa -C "user1@example.com" -f "id_rsa_user1"
  3. ls 명령으로 생성된 key 확인
    (id_rsa_user1, id_rsa_user1.pub - 개인키, 공개키)

  4. 사용할 계정마다 2번 진행

  5. ssh-agent에 ssh-key 추가 (계정 수 만큼 ssh-add 진행)

    $ eval "$(ssh-agent -s)"
    $ ssh-add ~/.ssh/id_rsa_user1



2. 계정별로 Github에 SSH Public key 추가

  1. 생성된 공개키 파일 열어서 내용 복사

    $ vi ~/.ssh/id_rsa_user1.pub
  2. Github에 user1 계정으로 로그인

  3. 프로필 누르고 Settings 메뉴로 이동

  4. SSH and GPG keys 메뉴로 이동

  5. New SSH key 클릭

  6. Title에는 구분하기 위한 이름을 입력하고 복사한 공개키를 붙여넣은 후 Add SSH Key 클릭

  7. 계정마다 1~6번 진행



3. SSH config 파일 설정

  1. ssh config 파일 수정 or 생성

    $ vi ~/.ssh/config

    사용할 계정마다 아래 설정을 추가

     Host github.com-user1
       HostName github.com
       User user1
       IdentityFile ~/.ssh/id_rsa_user1
  2. ssh 연결 테스트

    $ ssh -T git@github.com-user1



4-1. SSH를 사용해 git clone

  1. clone할 repo에서 SSH 선택 후 주소 복사 (HTTPS 말구)

  2. 복사한 주소를 수정해 git clone

    $ git clone git@github.com-user1:user1/저장소명.git

    ( github.com을 ssh config 파일에 설정한 Host명으로 변경 )



4-2. local 레포지토리의 config 변경해 git commit

  • 로컬에서 프로젝트를 만들고 github에 repositoy를 생성해서 연결하는 경우

    $ git remote add origin git@github.com-user1:user1/저장소명.git
    $ git config user.email user1@example.com

    원격 저장소의 ssh 주소 등록 후 로컬 저장소(프로젝트 디렉토리)의 git config 설정 변경
    (user.name은 user.email이 github에 등록된 이메일이 아닐 때 보여지며 설정하지 않아도 무방합니다)

  • 현재 로컬에서 작업중인 프로젝트의 사용자 계정을 변경하고 싶은 경우

    $ git remote set-url origin git@github.com-user1:user1/저장소명.git
    $ git config user.email user1@example.com

    원격 저장소의 ssh 주소 등록 후 로컬 저장소의 git config 설정 변경

Git commit시 기록되는 계정 정보

git은 commit할 때 git config에 있는 user.name과 user.email을 사용해 commit을 실행하는 계정 정보를 기록합니다.

global로 등록된 값과 local(폴더별)로 등록된 값 둘 다 존재하면 local 값이 우선시 됩니다. 이를 이용해 여러개의 계정 사용이 가능한거죠 :)

* vscode git extension 사용시 터미널에서 한 번 push 해줘야 그 다음부터 동작하는 듯 합니다.



이제 git config --global 로 설정한 user.name과 user.email을 default로 사용하고, 저장소(디렉터리) 별로 git config를 (--global없이) 설정해서 계정을 여러개 사용할 수 있습니다! 😎

profile
아무거나 끄적거리는 개발자

0개의 댓글