기존 git 프로젝트를 GitLab으로 가져 오시겠습니까?


147

저장소 "ffki-startseite"를 생성 한 Gitlab 설치 계정이 있습니다.

이제 git://freifunk.in-kiel.de/ffki-startseite.git모든 커밋과 분기가 있는 리포지토리에 리포지토리를 복제하려고 하므로 내 범위에서 작업을 시작할 수 있습니다.

가져 오려면 어떻게해야합니까?


3
gitlab의 새로운 기능으로 프로젝트를 만든 다음 프로젝트 페이지로 이동하십시오. 여기에 기본 지침이 표시됩니다.
Martijn van Wezel


기본 지침은 최신 버전의 Gitlab에 있습니다. 복사 한 사람이 여기에서 복사 할 수 있습니까?
jdevora

답변:


156

내 컴퓨터에서 로컬로 실행되는 다음 명령을 통해 프로젝트 를 모든 커밋, 분기 및 태그와 함께 gitlab 으로 완전히 내보낼 수있었습니다 .

내 예제를 설명 하기 위해 gitlab으로 가져올 소스 저장소로 https://github.com/raveren/kint 를 사용 합니다. 미리 gitlab에 빈 Kint네임 스페이스 (namespace 아래 raveren) 라는 이름의 빈 프로젝트 를 만들었고 새로 만든 프로젝트 의 http git url에 http://gitlab.example.com/raveren/kint.git

명령은 OS에 구애받지 않습니다.

A의 디렉토리 :

git clone --mirror https://github.com/raveren/kint
cd kint.git
git remote add gitlab http://gitlab.example.com/raveren/kint.git
git push gitlab --mirror

이제 새로운 리모컨으로 계속 사용하려는 로컬 복제 저장소가있는 경우 다음 명령 *을 실행하십시오.

git remote remove origin
git remote add origin http://gitlab.example.com/raveren/kint.git
git fetch --all

*이 (가)에서 원격 마스터의 이름을 바꾸지 않았다고 가정합니다 origin. 그렇지 않으면 처음 두 줄을 변경하여 반영하십시오.


1
그것은 나에게 오류를 준다 : remote : GitLab :이 프로젝트의 보호 된 분기에 푸시 코드를 강요 할 수 없다. 에 10.0.100.89:8496/project/james-project.git ! [원격 거부] 마스터 -> 마스터 (프리 후크 수신 거부)
제임스 Hirschorn

4
이것이 작동하려면 설정-> 저장소에서 보호 된 분기를 꺼야했습니다.
James Hirschorn

당신이 사용하는 것이 왜 내 질문을 참조 --mirror
마티 반 WEZEL

108

기존 저장소에 새 gitlab remote를 추가하고 다음을 누릅니다.

git remote add gitlab url-to-gitlab-repo
git push gitlab master

나는 그것을 강제로 밀어 넣어야했다 git push gitlab master -f. ) 덕분에, 지금은 나의 새로운 GitLab의 모든 커밋과 전체의 repo이
rubo77

19
거울이 필요하지 않습니까? 마스터 이외의 다른 지점이 있다면 어떨까요?
slhck

7
예, OP가 제안한대로 수행하면 모든 지점 (마스터 제외)과 태그
raveren

Gitlab 프로젝트 가져 오기는 프로젝트를 생성 할 때 URL에서 원격 저장소를로드합니다. svn repos를 가져 오기위한 지침이 포함되어 있습니다.
rickfoosusa

1
git remote add gitlab url-to-gitlab-repo git push gitlab master --mirror
Saurabh

23

모든 태그와 지점 을 유지하려면

이 명령을 단순히 existing Git repository

cd existing_repo
git remote rename origin previous-hosts
git remote add gitlab git@git.hutber.com:hutber/kindred.com.git
git push -u gitlab --all
git push -u gitlab --tags

모든 가지를 복사하지는 마십시오
Martijn van Wezel

19

Gitlab이 제공하는 단계는 다음과 같습니다.

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.example.com/rmishra/demoapp.git
git push -u origin --all
git push -u origin --tags

이것은 다른 지점이 아닌 마스터를 밀어 올릴 것입니다
allkenang

18

이것은 하나의 저장소를 새로운 위치로 이동시키는 기본입니다. 나는이 순서를 항상 사용한다. --bare를 사용하면 소스 파일이 표시되지 않습니다.

Git Bash를 엽니 다.
저장소의 Bare 복제본을 작성하십시오.

git clone --bare https://github.com/exampleuser/old-repository.git

새 저장소로 미러 푸시하십시오.

cd old-repository.git

git push --mirror https://github.com/exampleuser/new-repository.git

1 단계에서 작성한 임시 로컬 저장소를 제거하십시오.

cd ../
rm -rf old-repository.git

왜 거울? git 문서를 참조하십시오 : https://git-scm.com/docs/git-push

--all 모든 분기 (예 : 심판 / 헤드 / 심판) 다른 제품과 함께 사용할 수 없습니다.

--mirror 각 참조의 이름을 push로 지정하는 대신, 참조 / 아래의 모든 참조 (refs / heads /, refs / remotes / 및 refs / tags /를 포함하지만 이에 국한되지 않음)가 원격 저장소에 미러링되도록 지정합니다. 새로 생성 된 로컬 참조는 원격 끝으로 푸시되고 로컬로 업데이트 된 참조는 원격 끝에서 강제로 업데이트되며 삭제 된 참조는 원격 끝에서 제거됩니다. 구성 옵션 remote..mirror가 설정된 경우 이것이 기본값입니다.


gitlab과 함께 작동합니다!
수건

12

rake gitlab : import : repos 는 대량 가져 오기에 더 적합한 방법 일 수 있습니다.

  • repos_path( /home/git/repositories/group/repo.git) 아래에 Bare 저장소를 복사하십시오 . 디렉토리 이름은 .git그룹 또는 사용자 네임 스페이스로 끝나고 끝나야 합니다.
  • 운영 bundle exec rake gitlab:import:repos

소유자가 첫 번째 관리자가되고 그룹이없는 경우 그룹이 작성됩니다.

기존 베어 git 저장소를 Gitlab으로 가져 오는 방법 도 참조하십시오 .


혼란 스러울 수있는 사용자의 경우 기본 저장소는 일반적으로 저장소의 루트에 .git 폴더가없는 중앙 위치 (예 : github)에있는 저장소입니다. 베어 저장소가 저장된 서버에 액세스 할 수있는 경우에만 편리한 옵션입니다. 그렇지 않으면 @Raveren의 답변이 가장 좋습니다.
TinkerTenorSoftwareGuy

4
git clone --mirror git@github.com:username/repo-name.git

git remote add gitlab ssh://git@servername.com/username/repo.git

git push -f --tags gitlab refs/heads/*:refs/heads/*

ssh를 통해하는 것이 좋습니다. https가 작동하지 않을 수 있습니다.


"https가 작동하지 않을 수 있습니다"이것은 정상적으로 작동하지 않습니다
Martijn van Wezel

이것은 실제로 HTTP 연결이 비활성화되어 있기 때문입니다. 답변 해주셔서 감사합니다.
Micah

2

이슈, 풀 요청 Wiki, Milestones, Labels, Release notes 및 comment를 포함하여 프로젝트를 GitHub에서 GitLab으로 이동

GitLab Docs에 대한 철저한 지침이 있습니다.

https://docs.gitlab.com/ee/user/project/import/github.html

tl; dr

  • GitLab 사용자에게 매핑하려는 GitHub 사용자에게 다음 중 하나가 있는지 확인하십시오.

    • GitHub 아이콘을 사용하여 로그인 한 GitLab 계정-또는-
    • GitHub 사용자의 공개 이메일 주소와 일치하는 이메일 주소를 가진 GitLab 계정
  • 맨 위 탐색 줄에서 +를 클릭하고 새 프로젝트를 선택하십시오.

  • 프로젝트 가져 오기 탭을 선택한 다음 GitHub를 선택하십시오.
  • GitHub 리포지토리를 나열하려면 첫 번째 버튼을 선택하십시오. github.com의 페이지로 리디렉션되어 GitLab 응용 프로그램을 인증합니다.
  • gitlabhq 인증을 클릭하십시오. GitLab 가져 오기 페이지로 다시 리디렉션되고 모든 GitHub 리포지토리가 나열됩니다.
  • 가져올 저장소를 계속 선택하십시오.

그러나 자세한 내용과 후크 는 GitLab Docs 페이지 를 참조하십시오!

(별로 없습니다)


1

Gitlab은이 기능에 약간 버그가 있습니다. 프로젝트가 큰 경우 특별히 문제 해결을 수행하는 데 많은 시간을 허비 할 수 있습니다.

가장 좋은 해결책은 작성 / 가져 오기 도구를 사용하는 것입니다. 사용자 이름과 비밀번호를 입력하는 것을 잊지 마십시오. 그렇지 않으면 아무것도 가져 오지 않습니다.

내 스크린 샷을 따르십시오

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.