기존 Git 프로젝트를 GitLab으로 가져오시겠습니까?
저장소 "ffki-startsite"를 만든 Gitlab 설치 계정이 있습니다.
저장소를 .git://freifunk.in-kiel.de/ffki-startseite.git
모든 커밋과 분기가 있는 저장소로 이동할 수 있습니다. 그래야 내 범위에서 작업을 시작할 수 있습니다.
어떻게 수입합니까?
컴퓨터에서 로컬로 실행되는 다음 명령을 통해 모든 커밋, 분기 및 태그와 함께 프로젝트를 gitlab으로 완전히 내보낼 수 있었습니다.
예를 들어, 저는 https://github.com/raveren/kint 을 gitlab으로 가져오려는 소스 저장소로 사용할 것입니다.라는 이름의 빈 프로젝트를 만들었습니다.
Kint
공간 )raveren
) 사전에 gitlab에 접속해서 새로 만든 프로젝트의 http giturl이 http://gitlab.example.com/raveren/kint.git 이라고 알려주었습니다.명령은 OS에 구애받지 않습니다.
새 디렉터리:
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
그렇지 않으면 처음 두 줄을 변경하여 이를 반영합니다.
기존 리포지토리에 새 gitlab 원격을 추가하고 다음을 누릅니다.
git remote add gitlab url-to-gitlab-repo
git push gitlab master
모든 태그 및 분기를 보관하려면
는 " ▁an▁this다▁just"에서 만 하면 됩니다.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
이것은 기본적으로 한 레포를 새 위치로 이동하는 것입니다.저는 이 시퀀스를 항상 사용합니다.--bare를 사용하면 원본 파일이 표시되지 않습니다.
Git Bash 엽니다.
리포지토리의 기본 복제본을 만듭니다.
git clone --bare https://github.com/exampleuser/old-repository.git
새 리포지토리에 미러 푸시합니다.
cd old-repository.git
git push --mirror https://gitlab.com/exampleuser/new-repository.git
1단계에서 만든 임시 로컬 리포지토리를 제거합니다.
cd ../
rm -rf old-repository.git
거울은 왜?git의 설명서를 참조하십시오.
--all 모든 분기 푸시(즉, refs/heads/ 아래의 참조)는 다른 분기와 함께 사용할 수 없습니다.
--mirror 푸시할 각 참조의 이름을 지정하는 대신, refs/(refs/heads/, refs/remote/, refs/tags/를 포함하지만 이에 국한되지 않음) 아래의 모든 참조가 원격 저장소에 미러링되도록 지정합니다.새로 생성된 로컬 참조는 원격 끝으로 푸시되고, 로컬로 업데이트된 참조는 원격 끝에서 강제로 업데이트되며, 삭제된 참조는 원격 끝에서 제거됩니다.구성 옵션이 원격인 경우 기본값입니다.미러가 설정되었습니다.
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
rake gitlab:import:message가 대량 가져오기에 더 적합한 방법일 수 있습니다.
- 를 래에저복니다사합를 아래에 합니다.
repos_path
(/home/git/repositories/group/repo.git
디렉토리 이름은 다음 문자로 끝나야 합니다..git
그룹 또는 사용자 네임스페이스 아래에 있습니다. - 려달을
bundle exec rake gitlab:import:repos
소유자가 첫 번째 관리자가 되고 그룹이 아직 존재하지 않는 경우 그룹이 생성됩니다.
참고 항목:기존 Baregit 저장소를 Gitlab으로 가져오는 방법은 무엇입니까?
빈 프로젝트 gitlab을 만든 다음 로컬 터미널에서 다음 중 하나를 수행합니다.
기존 폴더 밀어넣기
cd existing_folder
git init
git remote add origin git@gitlab.com:GITLABUSERNAME/YOURGITPROJECTNAME.git
git add .
git commit -m "Initial commit"
git push -u origin master
기존 Git 저장소 푸시
cd existing_repo
git remote rename origin old-origin
git remote add origin git@gitlab.com:GITLABUSERNAME/YOURGITPROJECTNAME.git
git push -u origin --all
git push -u origin --tags
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가 작동하지 않을 수 있습니다.
Gitlab은 이 기능에 대해 약간 버그가 있습니다.특히 프로젝트 규모가 큰 경우 문제 해결에 많은 시간을 허비할 수 있습니다.
가장 좋은 해결책은 만들기/가져오기 도구를 사용하는 것입니다. 사용자 이름과 암호를 입력하는 것을 잊지 마십시오. 그렇지 않으면 아무 것도 가져오지 않습니다.
내 스크린샷 팔로우하기
이슈, 꺼내기 요청 Wiki, 마일스톤, 레이블, 릴리스 노트 및 의견을 포함하여 GitHub에서 GitLab으로 프로젝트 이동
GitLab Docs에 대한 자세한 지침은 다음과 같습니다.
https://docs.gitlab.com/ee/user/project/import/github.html
tl;dr
GitLab 사용자에게 매핑하려는 GitHub 사용자에게 다음 중 하나가 있는지 확인합니다.
- GitHub 아이콘 또는 -을 사용하여 로그인한 GitLab 계정
- GitHub 사용자의 공용 전자 메일 주소와 일치하는 전자 메일 주소를 가진 GitLab 계정
상단 탐색 모음에서 +를 클릭하고 새 프로젝트를 선택합니다.
- 프로젝트 가져오기 탭을 선택한 다음 GitHub을 선택합니다.
- GitHub 리포지토리를 나열하는 첫 번째 단추를 선택합니다.GitLab 응용 프로그램을 승인하는 github.com 페이지로 리디렉션됩니다.
- 인증 gitlabhq를 클릭합니다.GitLab의 가져오기 페이지로 다시 리디렉션되고 모든 GitHub 리포지토리가 나열됩니다.
- 가져올 리포지토리를 계속 선택합니다.
그러나 자세한 내용과 후크는 GitLab Docs 페이지를 참조하십시오!
(별것 아닙니다)
나는 여기서 가장 좋고 간단한 방법을 찾았고, 그것은 나에게 매력적인 것처럼 작동하며, 그것은 모든 태그와 가지를 원점에서 새로운 리모컨으로 밀어 넣을 것입니다.
git remote add newremote git@git-cloud.z.com:test/kubespray.git
git push newremote --tags refs/remotes/origin/*:refs/heads/*
'git push --all-u new remote'를 사용했는데 체크아웃된 지점만 새 remote로 푸시됩니다.
Git: 모든 분기를 새 원격으로 푸시
Keith Dechant 지음, 소프트웨어 설계자
다음은 Git 저장소에서 발생했을 수 있는 시나리오입니다.오래된 서버의 Gitrepo 작업 복사본이 있습니다.하지만 당신은 작업 복사본만 가지고 있고 원본은 접근할 수 없습니다.그래서 그냥 포크로 할 수는 없습니다.그러나 전체 레포와 모든 지점 기록을 새 리모컨으로 푸시해야 합니다.
작업 복사본에 이전 원격의 추적 분기(origin/branch1, origin/branch1 등)가 포함된 경우 이 작업이 가능합니다.만약 그렇다면, 당신은 전체 레포와 역사를 가지고 있습니다.
하지만 저의 경우 수십 개의 지점이 있었고, 일부 또는 전부 현지에서 체크아웃한 적이 없었습니다.그들을 모두 밀어 올리는 것은 무거운 리프트처럼 보였습니다.어떻게 진행해야 할까요?
두 가지 옵션을 확인했습니다.
옵션 1: 모든 지점을 체크아웃하고 푸시하면 이를 수행할 수 있으며, Bash 스크립트를 작성하여 도움을 줄 수도 있습니다.그러나 이렇게 하면 체크아웃할 때마다 작업 파일이 변경되고 각 원격 추적 분기에 대한 로컬 분기가 생성됩니다.레포가 크면 속도가 느려집니다.
옵션 2: 작업 복사본을 변경하지 않고 밀어넣기 두 번째 방법이 있습니다. 각 분기를 체크아웃할 필요가 없고 작업 복사본에 별도의 분기를 만들지 않으며 작업 복사본의 파일을 수정하지도 않습니다.
오래된 비활성 원격을 "old remote"라고 부르고 새 원격을 "new remote"라고 부르는 경우 다음 명령을 사용하여 원격 추적 분기만 푸시할 수 있습니다.
git push newremote refs/remotes/oldremote/*:refs/heads/*
경우에 따라 분기의 일부만 푸시할 수도 있습니다.분기 이름에 슬래시가 있는 경우(예: 이전 원격/기능/지점3, 이전 원격/기능/지점4 등), "이전 원격/기능"으로 시작하는 이름을 가진 원격 추적 분기만 푸시할 수 있습니다.
git push newremote refs/remotes/oldremote/features/*:refs/heads/features/*
모든 분기를 푸시하든 아니면 일부 분기만 푸시하든 Git는 새 로컬 분기를 만들지 않고 작업 파일을 변경하지 않고 전체 작업을 수행합니다.패턴과 일치하는 모든 추적 분기가 새 원격으로 푸시됩니다.
이 항목에 대한 자세한 내용은 스택 오버플로에서 이 스레드를 확인하십시오.
게시된 날짜:2017년 10월 9일
언급URL : https://stackoverflow.com/questions/20359936/import-an-existing-git-project-into-gitlab
'programing' 카테고리의 다른 글
C에서 선언문 안에 있는 콜론은 무엇을 의미합니까? (0) | 2023.07.07 |
---|---|
mongodb 셸 쿼리에서 GUID를 사용하는 방법 (0) | 2023.07.07 |
@Spring Boot 2.0.0.REASE에 LocalServerPort가 없습니다. (0) | 2023.07.07 |
탐색 컨트롤러에서 뒤로 단추에 대한 작업 설정 (0) | 2023.07.07 |
테이블을 매개 변수로 sql 서버 UDF로 전달 (0) | 2023.07.07 |