GitHub에서 GitLab으로 가져오기
가져오기 도구를 사용하여 GitHub 리포지터리를 GitLab.com 또는 자체 관리형 GitLab 인스턴스로 가져올 수 있습니다.
프로젝트의 다음 항목을 가져옵니다.
- 리 포지터리 설명 (GitLab.com 및 7.7+)
- Git repository 데이터 (GitLab.com 및 7.7+)
- Issues (GitLab.com 및 7.7+)
- Pull requests (GitLab.com 및 8.4 이상)
- Wiki 페이지 (GitLab.com 및 8.4 이상)
- 마일스톤 (GitLab.com 및 8.7 이상)
- 레이블 (GitLab.com 및 8.7 이상)
- 릴리즈 노트 설명 (GitLab.com 및 8.12+)
- Pull request 리뷰 코멘트 (GitLab.com & 10.2+)
- Pull request 리뷰 (GitLab.com & 13.7+)
- Pull request “merged by” 정보 (GitLab.com & 13.7+)
- 정기적인 이슈 및 Pull request 코멘트
- Git LFS (대용량 파일 저장소) 개체
Pull request 및 이슈에 대한 참조는 유지되며(GitLab.com 및 8.7+), 가져온 각 저장소는 가시성 수준이 제한되지 않는 한 가시성 수준을 유지하며, 이 경우 기본 프로젝트 가시성으로 기본 설정됩니다.
네임스페이스는 gitlab.com/janedoe
또는 gitlab.com/customer-success
과 같은 GitLab에서 사용자나 그룹입니다. Rails 콘솔에서 프로젝트를 다른 네임스페이스로 이동하기 위해 몇 가지 일괄 작업을 수행할 수 있습니다.
이 프로세스는 GitHub에서 GitLab으로 어떤 유형의 그룹이나 조직도 마이그레이션하거나 가져오지 않습니다.
사용 사례
수행하는 단계는 GitHub.com 또는 GitHub Enterprise에서 가져오는지 여부와 GitLab.com 또는 자체 관리형 GitLab 인스턴스로 가져오는지 여부에 따라 다릅니다.
- GitLab.com으로 가져오는 경우, 개인 액세스 토큰을 사용하여 GitHub 리포지터리를 가져올 수도 있습니다. 이 방법은 모든 사용자 활동(예 : 이슈 및 풀 리퀘스트)을 일치하는 GitLab 사용자와 연결하지 않으므로 권장하지 않습니다.
- 자체 관리형 GitLab 인스턴스로 가져오는 경우, Sidekiq 작업자의 제약 없이 GitHub Rake 작업을 대신 사용하여 프로젝트를 가져올 수 있습니다.
- GitHub Enterprise에서 자체 관리형 GitLab 인스턴스로 가져오는 경우, 먼저 GitHub 통합 사용 설정을 해야 합니다.
- GitHub Enterprise에서 GitLab.com으로 프로젝트를 가져오려면 Import API를 사용하세요.
- GitHub.com에서 자체 관리형 GitLab 인스턴스로 가져오는 경우, GitHub 통합을 설정할 필요가 없습니다. Import API를 사용할 수 있습니다.
작동 원리
이슈와 풀 리퀘스트를 가져올 때 가져오기 도구는 GitLab 인스턴스의 데이터베이스에서 GitHub 작성자 및 담당자를 찾으려고 시도합니다. (GitLab에서는 풀 리퀘스트를 "Merge requests"라고 함)
이 연결이 성공하려면 저장소의 각 GitHub 작성자 및 담당자가 가져오기 전에 다음 조건 중 하나를 충족해야 합니다.
- 이전에 GitHub 아이콘을 사용하여 GitLab 계정에 로그인
- GitLab 계정의 이메일 주소와 일치하는 공개 이메일 주소가 있는 GitHub 계정 소유
GitHub 계정을 사용하는 GitLab 콘텐츠를 가져오려면 GitHub 공개 이메일 주소가 채워져야 합니다. 그러면 모든 코멘트와 기여가 GitLab의 동일한 사용자에게 올바르게 매핑됩니다. GitHub Enterprise(온 프레미스)에서는 제품을 사용하기 위해 이 필드를 채울 필요가 없으므로 가져온 콘텐츠가 새 시스템의 사용자에게 제대로 매핑되도록 기존 GitHub Enterprise 계정에 추가해야 할 수 있습니다. 해당 주소를 추가하는 방법에 대한 지침은 GitHub 설명서를 참조하십시오.
프로젝트에서 참조된 사용자가 GitLab 데이터베이스에 없는 경우, 프로젝트 작성자 (일반적으로 가져오기 프로세스를 시작한 사용자)가 작성자/담당자로 설정되지만, 원래 GitHub 작성자를 언급하는 이슈에 대한 메모가 추가됩니다.
가져오기 도구는 새 네임스페이스(그룹)가 존재하지 않는 경우 생성하거나, 네임스페이스를 사용하는 경우 가져오기 프로세스를 시작한 사용자의 네임스페이스 아래에 리포지터리를 가져옵니다. 적절한 권한으로 네임스페이스/리포지터리 이름을 편집할 수도 있습니다.
가져오기 도구는 오픈 풀 리퀘스트와 관련된 프로젝트 포크(Forks)의 브랜 치도 가져옵니다. 이러한 브랜치는 GH-SHA-username/pull-request-number/fork-name/branch
와 유사한 명명 체계를 사용하여 가져옵니다. 이로 인해 GitHub 리포지터리와 비교하여 브랜치에서 불일치가 발생할 수 있습니다.
추가 기술 세부 정보는 GitHub Importer 개발자 문서를 참조하세요.
가져오기 프로세스에 대한 개요는 GitHub에서 GitLab으로 마이그레이션 비디오를 참조하세요.
GitHub 리포지터리를 GitLab으로 가져오기

GitHub 통합 사용
시작하기 전에 GitLab 사용자에게 매핑하려는 GitHub 사용자가 다음 중 하나를 가지고 있는지 확인합니다.
- GitHub 아이콘을 사용하여 로그인 한 GitLab 계정
- GitHub 사용자 프로필에서 공개적으로 표시되는 이메일 주소와 일치하는 이메일 주소가 있는 GitLab 계정
사용자 일치 시도는 해당 순서로 진행되며, 사용자를 어떤 방식으로도 식별할 수 없으면, 작업은 가져오기를 수행하는 사용자 계정과 연관됩니다.
자체 관리형 GitLab 인스턴스를 사용 중이거나 GitHub Enterprise에서 가져오는 경우, 이 프로세스를 수행하려면 GitHub 통합을 구성해야 합니다.
- 상단 내비게이션 바에서 [+] 아이콘을 클릭하고 New project를 선택하거나, 그룹에서 New project 버튼을 클릭합니다.
- Create new project 페이지에서 Import project를 클릭합니다.
- Import project 페이지에서 GitHub 버튼을 클릭합니다.
- Authenticate with GitHub 페이지에서 Authenticate with GitHub 버튼을 클릭합니다.
- GitHub의 Sign in 페이지로 리다이렉션 됩니다.
- GitHub에 로그인 하면 Authorize GitLab.com 페이지로 이동됩니다.
- Authorize GitLab.com 페이지의 Organization access 섹션에서 원하는 조직의 Grant 버튼을 클릭합니다.
- Authorize gitlabhq 버튼을 클릭합니다.
- 계속해서 가져올 리포지터리 선택을 진행합니다.
GitHub 토큰 사용
개인 액세스 토큰을 사용하여 프로젝트를 가져오는 것은 권장되지 않습니다. GitLab.com 사용자인 경우, 개인 액세스 토큰을 사용하여 GitHub에서 프로젝트를 가져올 수 있지만, 이 방법은 모든 사용자 활동(예 : 이슈 및 풀 리퀘스트)을 일치하는 GitLab 사용자와 연결할 수 없습니다. 자체 관리형 GitLab 인스턴스의 관리자이거나 GitHub Enterprise에서 가져오는 경우, 개인 액세스 토큰을 사용할 수 없습니다. GitHub 통합 방법(위)은 모든 사용자에게 권장됩니다. 작동 원리 섹션에서 자세히 알아보세요.
GitHub 통합을 사용하지 않는 경우에도 GitHub으로 인증을 수행하여 GitLab에 리포지터리 액세스 권한을 부여할 수 있습니다.
GitHub에서 다음을 수행하여 GitLab 과 연동하기 위한 Personal access token을 생성합니다.
-
우측 상단의 프로필 사진을 클릭한 다음 Settings를 클릭합니다.
-
Account settings 사이드바에서 Developer settings를 클릭합니다.
-
사이드바에서 Personal access tokens를 클릭합니다.
-
Generate new token 버튼을 클릭합니다.
-
New personal access token 페이지에서 Note 필드에 원하는 Token 이름(예:
gitlab
)을 입력하고repo
스코프를 체크한 다음, Generate token 버튼을 클릭합니다. -
토큰이 생성되어 화면에 출력되면 복사하여 기록해 둡니다.
이때 토큰을 저장하지 않으면 다시 볼 수 없습니다.
-
GitLab으로 돌아가서 Authenticate with GitHub 페이지의 Personal Access Token 필드에 기록해 둔 토큰을 복사하여 붙여넣고 Authenticate 버튼을 클릭합니다.
-
Import repositories from GitHub 페이지로 이동되면, 가져올 리포지터리의 GitLab 네임스페이스를 검색하여 선택한 다음, Import 버튼을 클릭하여 가져오기를 진행합니다.