github를 사용할 때 보통 처음에 아래와 같은 명령으로 config를 등록하게 되는데요.
$ git config --global user.name "Name"
$ git config --global user.email you@example.com
이 config는 ~/.gitconfig
에 저장되고 git이 관리하게 됩니다.
여러개의 github 계정을 사용하려면 어떻게 하는게 좋을까요?
(구글링을 많이 해봤는데 이게 젤 편한거 같아요 🧐)
ssh 디렉토리로 이동
$ cd ~/.ssh
github 이메일로 ssh-key 생성
(명령어 실행 시 암호 입력을 받는데 엔터 2번 쳐서 skip 가능)
$ ssh-keygen -t rsa -C "user1@example.com" -f "id_rsa_user1"
ls
명령으로 생성된 key 확인
(id_rsa_user1, id_rsa_user1.pub - 개인키, 공개키)
사용할 계정마다 2번 진행
ssh-agent에 ssh-key 추가 (계정 수 만큼 ssh-add 진행)
$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/id_rsa_user1
생성된 공개키 파일 열어서 내용 복사
$ vi ~/.ssh/id_rsa_user1.pub
Github에 user1 계정으로 로그인
프로필 누르고 Settings 메뉴로 이동
SSH and GPG keys 메뉴로 이동
New SSH key 클릭
Title에는 구분하기 위한 이름을 입력하고 복사한 공개키를 붙여넣은 후 Add SSH Key 클릭
계정마다 1~6번 진행
ssh config 파일 수정 or 생성
$ vi ~/.ssh/config
사용할 계정마다 아래 설정을 추가
Host github.com-user1
HostName github.com
User user1
IdentityFile ~/.ssh/id_rsa_user1
ssh 연결 테스트
$ ssh -T git@github.com-user1
clone할 repo에서 SSH 선택 후 주소 복사 (HTTPS 말구)
복사한 주소를 수정해 git clone
$ git clone git@github.com-user1:user1/저장소명.git
( github.com을 ssh config 파일에 설정한 Host명으로 변경 )
로컬에서 프로젝트를 만들고 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없이) 설정해서 계정을 여러개 사용할 수 있습니다! 😎
좋은 글 잘 보고갑니다