한 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를 설정한 적이 있다면, 다른 계정으로 아래의 단계들을 진행합니다.
각 각의 SSH 키 쌍에 대해
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
실행하기id_rsa
)은 SSH 개인키와 공개키를 생성하는데 사용되므로 고유한 파일명을 입력합니다. 예를 들어, 이 단계에서 파일명user-1
, user-2
를 입력하면 각 각의 입력 값에 대해 개인키와 공개키 user-1
+ user-1.pub
, user-2
+ user-2.pub
가 생성됩니다.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
항목의 user1
과 user2
은 계정을 구분할 식별자로 대체합니다.IdentityFile
항목의 user1
과 user2
은 1. 과정에 생성한 파일명으로 대체합니다.
git clone git@github.com-user1:user1/your-repo-name.git your-repo-name_user1
git config --local -e
실행하여 로컬 repo의 git 설정 파일에 다음 내용을 추가합니다.
[user] name = user1 email = user1@gmail.com
원격 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
을 실행 또는[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