티스토리 뷰

반응형

기존에 로컬에서 작업하던 레포지토리를 개인 GitHub에 올리려고 하니 문제가 발생했습니다.
공부 용도로 막 개발하던 레포이다 보니, 커밋 히스토리도 지저분하고 모든 커밋 계정이 회사 계정으로 설정되어 있었습니다.

앞으로 해당 레포를 계속 발전시키고 유지보수하기 위해 개인 GitHub 계정에서 관리하기로 결정했습니다.

이를 위해 다음 작업을 진행했습니다.

  • 로컬 PC에 GitHub 계정 추가
  • 기존 레포지토리의 커밋 계정을 개인 계정으로 일괄 변경
  • 개인 GitHub에 레포지토리 업로드

 

로컬 PC에 GitHub 계정 추가 설정

1. 계정별 SSH 키 생성

터미널에서 계정마다 SSH 키를 생성합니다.

# 개인 계정용 SSH 키 생성 (이메일: personal@example.com)
ssh-keygen -t ed25519 -C "personal@example.com" -f ~/.ssh/id_ed25519_personal

# 업무 계정용 SSH 키 생성 (이메일: work@example.com)
ssh-keygen -t ed25519 -C "work@example.com" -f ~/.ssh/id_ed25519_work

 

2. 각 ssh-aget 에 ssh 키 추가

# ssh-agent 실행
eval "$(ssh-agent -s)"

# 각 SSH 키를 ssh-agent 에 추가
ssh-add ~/.ssh/id_ed25519_personal
ssh-add ~/.ssh/id_ed25519_work

 

3. SSH 설정파일 작성

~/.ssh/config 파일에 계정별 Host 별칭을 추가합니다. 

# 개인 GitHub 계정
Host github-personal #별칭
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_personal

# 업무 GitHub 계정
Host github-work
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_work

이제 계정별로 다른 SSH 키를 사용할 수 있습니다.

 

4. 개인 깃허브에 SSH 키를 등록합니다.

로컬 SSH 공개키를 복사합니다.

pbcopy < ~/.ssh/id_ed25519_personal.pub

GitHub에서 다음 경로로 이동합니다.

Profile > Settings > SSH and GPG keys 로 이동하여 New SSH key 를 등록합니다. 

Title은 식별 가능한 이름으로 입력하고, Key에는 복사한 값을 붙여넣습니다.

 

5. 원격에 new repository 를 생성합니다.

개인 GitHub 계정에서 새로운 Repository를 생성합니다.

 

6. 로컬 레포지토리에 개인 계정 설정

해당 레포지토리에서 앞으로 사용할 커밋 계정을 설정합니다.

git config user.name <user_name>
git config user.email <email>

원격 저장소를 개인 계정으로 등록합니다.

git remote add origin git@github-personal:<user_name>/<repository_name>

 

기존 커밋 계정 변경

기존 레포는 커밋 계정이 모두 회사 계정으로 되어 있었고, 커밋 히스토리도 정리가 필요했습니다.
히스토리를 정리하면서 커밋 계정도 함께 변경해 줬습니다.

 

1. .gitignore 추가 및 민감 정보 제거

기존 레포에는 .gitignore가 없었습니다.
DB 키 등 민감한 파일이 Public 레포에 올라가지 않도록 먼저 .gitignore를 추가합니다.

이후 기존 히스토리에 포함된 키 파일을 제거합니다.

# 먼저 git-filter-repo 를 다운받습니다.
brew install git-filter-repo

# 혹시모를 사고 예방을 위해 백업을 해둡니다.
git branch backup

# 커밋 히스토리에서 파일명에 해당하는 커밋이 있었으면 해당 파일을 모두 제거합니다. 
git filter-repo --force --path <파일명> --invert-paths

 

2. 커밋 작성자/커미터 정보 변경

# 현재 커밋의 계정명과 이메일이 어떻게 되어있는지 확인합니다.
git log --pretty=format:"%h %an <%ae>"

# 커밋 메시지의 계정명/이메일 을 변경합니다.
git filter-repo --commit-callback '
if commit.author_email == b"<기존 이메일>":
    commit.author_name = b"<바꿀 계정명>"
    commit.author_email = b"<바꿀 이메일>"
if commit.committer_email == b"<기존 이메일>":
    commit.committer_name = b"<바꿀 계정명>"
    commit.committer_email = b"<바꿀 이메일>"
'

# 정상 변경됐는지 확인합니다.
git log --pretty=format:"%h %an <%ae>"

 

3. GitHub로 업로드

git push origin master

이로써 로컬 레포지토리를 개인 GitHub 계정으로 깔끔하게 업로드할 수 있습니다.

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함