[Git] GitLab -> GitHub으로 잔디 옮겨심기🌱 (다른 계정 커밋 내역 가져오기)

sujipark-fe·2024년 10월 21일
0

Git

목록 보기
2/3
post-thumbnail

회사나 github이 아닌 다른 git 저장소의 레포를 나의 개인 github으로 옮겨올 수 있습니다.
뿐만 아니라 잔디도 옮겨 심을 수 있죠.🌱

(작업 내용 요약)
1. GitHub에서 복사해올 빈 레포 생성 (private로)
2. GitLab 레포에서 1번에서 생성한 미러링 레포 경로 입력
3. 서로 이메일이 달라서 커밋내역이 나오지 않는다면, 이메일 변경하여 푸쉬하기.


1. 새로운 GitHub 레포지토리 생성

원본 레포를 복사해올 새로운 GitHub 레포를 생성합니다.
(선택) 회사 레포 처럼 오픈되면 안되는 레포의 경우 private로 생성합니다.


저는 미러링 레포라는 것을 알 수 있도록 mirror_ 라는 이름을 추가해주었습니다.
그리고 개인적인 레포라 private로 설정해주었어요.

2. GitLab 레포지토리 클론

이제 미러링할 GitLab 레포로 이동합니다.
해당 레포 경로 > Settings > Repository > Mirroring repositories 에서 Expand 클릭.

Add New 버튼을 클릭하여 미러링 레포 경로를 입력합니다.

미러링할 레포에 1번에서 생성한 GitHub 경로를 입력합니다.
여기서 주의할 점은 Password에는 GitHub 토큰을 입력해야 한다는 것입니다.

그리고 Mirror repository를 클릭하면 이렇게 레포가 추가됩니다.

또는 git CLI로 클론하기

--mirror 옵션을 붙이면 모든 브랜치와 태그를 포함한 완벽한 복제를 수행합니다.

git clone --mirror https://gitlab.com/your-gitlab-repo.git
cd your-gitlab-repo.git

3. 사용자 정보 수정

기존 커밋에 포함된 사용자 메일 주소와 이름을 일괄 변경하려면 Git filter-repo 도구를 사용합니다. 이 패키지를 파이썬을 기반으로 설치, 실행 해야 합니다.(파이썬 설치는 이 글 참조: https://velog.io/@suji5358/Windows-Python-pip-설치하기)

3.1 Git filter-repo 설치

pip install git-filter-repo

3.2 사용자 메일 및 이름 변경 스크립트 실행

Windows에서는 명령 프롬프트(cmd) 또는 Git Bash를 사용해 git filter-repo 명령어를 실행할 수 있습니다.

여기서 "old_email@example.com"에 원본 레포(gitlab 메일주소)를 입력하고,
"new_email@example.com"에 미러링할 레포(github 메일주소)를 입력합니다.

git filter-repo --commit-callback '
if commit.author_email == b"old_email@example.com":
    commit.author_email = b"new_email@example.com"
    commit.author_name = b"New Name"
if commit.committer_email == b"old_email@example.com":
    commit.committer_email = b"new_email@example.com"
    commit.committer_name = b"New Name"
'

아래와 같이 "Completely finished after 1.28 seconds." 라고 나오면 복사에 성공한 것입니다!🎉

cmd에서 git log를 출력하여 실제로도 잘 반영되었는지 확인합니다.

git log

4. GitHub에 푸시

git push -f 명령어로 강제 push를 해줍니다.
그럼 모든 브랜치와 태그가 푸시됩니다.

그리고 GitHub 레포지토리에서 커밋 기록과 사용자 정보(이름, 이메일)가 올바르게 변경되었는지 확인하고, 잔디도 확인합니다.

gitlab의 커밋내역이 잘 복사되었네요👍

profile
개발 너무 재밌다 재밌어❤️‍🔥

0개의 댓글