첫 번째 작심일일, Mac OS에서 여러 개의 git 계정을 사용하는 방법

halonso14·2022년 1월 2일
0

한 PC에서 아무런 설정 없이 업무용 git 계정과 개인용 git 계정을 같이하여 사용하다 보니
간혹 잘못된 계정으로 원격 repo에 push를 하는 경우가 발생하곤 했다.

이러한 불참사를 방지하기 위해 local repo 별로 사용하는 git 계정을 다르게 설정하는 방법을 찾아 적용했지만
나는 여전히 PC가 바뀔 때마다 설정 방법을 다시 검색하고 있다.
내 게으름에 대해 반성하며 정리(의역)를 해보자.


Mac OS를 처음 사용하시는 분이라면, Mac은 SSH config 파일을 .ssh 디렉토리에 저장한다는 사실을 알려드리고 싶습니다. config 파일은 각 각의 GitHub(또는 Bitbucket) 계정과 SSH 키의 관계를 정의하는 파일입니다. 기본적으로 생성된 SSH 키는 .ssh 디렉토리에 저장됩니다. Terminal에서 cd ~/.ssh를 실행하고, editor로 config 파일을 열면 다음과 같은 내용을 확인할 수 있을 것입니다.

Host *
 AddKeysToAgent yes
 UseKeyChain yes
 IdentityFile ~/.ssh/id_rsa
 ForwardAgent yes

업무용/개인용 GitHub(또는 Bitbucket) 계정을 분리하여 사용하는 경우, Mac에 각 계정을 등록하는 방법을 알아보겠습니다.
만약 계정을 사용하여 Mac에 SSH를 설정한 적이 있다면, 다른 계정으로 아래의 단계들을 진행합니다.

1. SSH 키 생성하기.

각 각의 SSH 키 쌍에 대해

  • ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 실행하기
  • "Enter a file in which to save the key" 메시지가 표시되며 파일명을 입력하게 됩니다. 입력한 파일명(기본 값: id_rsa)은 SSH 개인키와 공개키를 생성하는데 사용되므로 고유한 파일명을 입력합니다. 예를 들어, 이 단계에서 파일명user-1, user-2를 입력하면 각 각의 입력 값에 대해 개인키와 공개키 user-1 + user-1.pub, user-2 + user-2.pub 가 생성됩니다.
  • GitHub 에서 자세한 내용을 확인 할 수 있습니다. 이 가이드에서는 ssh-agent에 개인키를 등록하지 않습니다.

2. GitHub 계정에 공개키 등록하기

  • 다음 과정을 진행합니다.

3. SSH config 파일 수정하기

~/.ssh 디렉토리의 SSH config 파일에 다음 내용을 추가합니다.

#user1 account
Host github.com-user1
   HostName github.com
   User git
   IdentityFile ~/.ssh/user1
   IdentitiesOnly yes

#user2 account
Host github.com-user2
   HostName github.com
   User git
   IdentityFile ~/.ssh/user2
   IdentitiesOnly yes
  • Host 항목의 user1user2은 계정을 구분할 식별자로 대체합니다.
  • IdentityFile 항목의 user1user2은 1. 과정에 생성한 파일명으로 대체합니다.

4. Git repo 클론하기

git clone git@github.com-user1:user1/your-repo-name.git your-repo-name_user1

5. Git 계정 설정하기

git config --local -e 실행하여 로컬 repo의 git 설정 파일에 다음 내용을 추가합니다.

[user]
    name = user1
    email = user1@gmail.com

6. 원격 repo의 url 형식 확인하기

원격 repo의 url이 git@github.com-user1:user1/your-repo-name.git your-repo-name_user1와 같은 형식인지 확인합니다.

  • git remote set-url origin git@github.com-user1:user1/your-repo-name.git your-repo-name_user1을 실행 또는
  • local git 설정 파일에 원격 repo의 ssh-url을 추가합니다.
     [remote "origin"] 
           url = git@github.com-user1:user1/your-repo-name.git
           fetch = +refs/heads/*:refs/remotes/origin/*

url 확인을 완료했으면, 이제 pull/push/fetch 같은 git 커맨드가 동작하는지 확인합니다.

참조: https://gist.github.com/Jonalogy/54091c98946cfe4f8cdab2bea79430f9

profile
삼백 육십 오 번의 작심일일

0개의 댓글