ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Git] github 계정 여러개 사용
    Github 2024. 1. 5. 02:15
    728x90

    작업 중인 PC에서 github 계정을 여러 개 사용하고 싶었습니다.

    global 등록된 user.name 과 user.email이 있었기에 다른 계정으로 push가 되지 않는 문제가 있었습니다.

     

    이를 해결하기 위해 한 PC에서 여러 개의 github계정을 사용하는 방법을 포스팅하겠습니다.

     

    Config

    config --global

    github를 처음 사용할 때 global config 정보인 user.name과 user.email을 등록하게 됩니다.

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

    이 config는 "~/.gitconfig"에 저장되고 git이 관리합니다.

     

    config --local

    local계정을  추가해서 사용하려고 했습니다.

    local계정이 등록되어 있다면 global보다 우선순위로 동작합니다.

    $ git config --local user.name "name"
    $ git config --local user.email "email@example.com"
    $ git config --local --list

    로컬 계정 등록은 ".git" 파일이 있는 곳에서 할 수 있습니다.(git repository안에서 실행 가능)

    ".git"파일에 로컬 계정을 추가하는 작업이기 때문입니다.

     

    로컬 계정을 등록하였지만 git push작업이 이루어지지 않았습니다.

    로컬 계정에 대한 접근이 거부되었기 때문입니다.

    인증이 되지 않아 발생한 문제입니다.

     

    추가하고 싶은 계정은 ssh-key를 통해 인증하여 사용할 수 있습니다.

    SSH Key 생성, 등록, 설정

    키 생성

    1. ssh 디렉토리 이동

    $ cd ~/.ssh

     

    2. github이메일로 ssh-key생성

    $ ssh-keygen -t rsa -b 4096 -C "id@gmail.com" -f "id_rsa_user"

    "Enter passphrase"명령어가 나오게 되고 인증시 사용할 암호를 입력합니다.

     

    3. ssh-key확인

    $ ls

     ls 명령어로 ssh-key가 잘 생성되었는지 확인합니다.

    개인키 : id_rsa_user

    공개키 : id_rsa_user.pub

    두 개의 키가 생성된 것을 확인할 수 있습니다.

     

    윈도우에서는 아래 경로로 가서 확인하는 방법도 있습니다.

    C:/Users/[계정]/.ssh

     

    4. ssh-agent에 ssh-key추가

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

    생성한 ssh-key를 등록하기 위한 작업입니다.

     

    이제 SSH-KEY가 준비되었습니다. Github에 가서 설정하겠습니다.

     

    Github에 키 등록

    ssh-key를 사용하고 싶다면 github에 SSH Public Key를 등록해야 합니다.

    1. 생성된 공개키 파일의 내용 복사(전체 복사)

    $ vi ~/.ssh/id_rsa_user.pub

     

    윈도우 사용자라면 " C:/Users/[계정]/.ssh " 경로에서 id_rsa_user.pub 파일을 메모장으로 열어서 전체 복사해도 됩니다.

     

    2. Github에 user계정에서 Setting

     

    3. New SSH Key

    클릭 후 복사 한 키를 붙여 넣습니다.

     

    해당 user에 대한 SSH key가 추가 되었습니다. 

    다른 user도 있다면 위와 같이 ssh key생성 후 github에 등록 과정을 하면 됩니다.

     

    SSH Config 파일 설정

    1. ssh config 파일 수정 및 생성

    $ vi ~/.ssh/config

     

    윈도우 사용자는 아래 경로로 이동해서 진행해도 됩니다.

    C:\Users\[계정]\.ssh

     

    config파일을 열어 사용할 github계정을 추가합니다.

    아래의 설정을 추가하면 됩니다.

     Host github.com-user
       HostName github.com
       User user
       IdentityFile ~/.ssh/id_rsa_user

     

    2. ssh연결 테스트

    $ ssh -T git@github.com-user

     

    Enter passphrase for key '/c/Users/ppoxox/.ssh/id_rsa_user':
    Hi user! You've successfully authenticated, but GitHub does not provide hell access.

    인증에 성공했다는 메시지가 나옵니다.

     

    Git Clone

    SSH를 사용하여 Git Clone을 해봅시다.

     

    1. HTTPS가 아닌 SSH 주소를 복사합니다.

     

    2. git bash에서 git clone 합니다.

     

    이 때, 복사한 주소에 "github.com"을 ssh config파일에서 설정한 Host명으로 변경합니다.

    "github.com-user"

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

     

    암호 입력하면 clone이 성공합니다.

     

    Git Push

    git add

    git commit -m

    git push

    명령어를 통해 최종 push가 이루어집니다.

     

    여기까지 해도 될 거 같은데 저는 local 계정도 추가해보도록 하겠습니다.

    위에서 설명한 config --local 항목에서의 명령어를 사용하여 local사용자를 설정합니다.

    이 명령어의 실행 위치는 git repository가 있는 디렉토리 안입니다. ( .git 이 있는 위치)

    $ git config --local user.name "name"
    $ git config --local user.email "email@example.com"
    $ git config --local --list

     

     

    설정 후 git push과정이 성공하였다면 ssh-key 암호 입력하라고 합니다.

    ssh-key암호까지 입력하면 push에 성공합니다.

     

    로컬에서 작업 후 Push

    Case 1 ) 로컬에서 프로젝트를 만들고 Github에 Repository를 생성하는 경우

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

    원격 저장소의 ssh주소 등록 후 로컬 저장소(프로젝트 디렉토리)의 git config설정을 변경합니다.

     

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

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

    원격 저장소의 ssh주소 등록 후 로컬 저장소의 git config설정을 변경합니다.

     

    728x90

    댓글

© 2022. code-space ALL RIGHTS RESERVED.