Git, 내 저장소 다른 저장소로 옮기는 방법

1 minute read

[Gitlab 에서 Github로 저장소 commit내역 유지하면서 옮기기]

1. 저장소 옮기기

1. git clone --mirror old-repository.git(옮기고 싶은 git주소)

2. cd old-repository

3. git remote set-url --push origin new-repository.git(새로운 git주소)

4. git push --mirror

일반적인 경우는 위에 순서대로만 해줘도 됩니다.

기존 사용하던 계정 정보가 수정된 경우

최근에 gitlab 계정 정보를 변경했더니 clone 과정에서 아래처럼 접근거부 에러가 발생했습니다.

remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://lab.ssafy.com/s02-final/s02p31a406.git/'

거부

이때는 관리자 권한으로 아래 명령을 실행

git config --system --unset credential.helper

다시 clone을 시도하면 계정 정보를 다시 입력받고 clone이 됩니다.

하지만 이제부터 계속해서 계정 정보를 물어보게 되므로 다음에 입력한 값을 저장하도록 처리해야함.

git config credential.helper store

다시 한번 계정을 입력하면 이후에는 더 이상 물어보지 않는다.

git pull
Username for 'https://gitlab.com': MYUSERNAME
Password for 'https://gitlab.com': MYPASSWORD
Already up to date.

2. 100MB를 넘어가는 크기의 파일을 지닌 저장소 옮기기

1. Git LFSBFG Repo Cleaner를 설치합니다.

  • BFG의 파일경로 기억

    bfg경로

2. 복사하고자 하는 저장소(gitlab)을 clone을 생성

git clone --mirror old-repository.git(옮기고 싶은 git주소)

3. 커밋 히스토리 내에서 100MB가 넘는 Large file을 찾아서 트랙킹

git filter-branch --tree-filter 'git lfs track "*.p"' -- --all
   
# 여러 개 할 경우 아래처럼
# git filter-branch --tree-filter 'git lfs track "*.{zip,jar}"' -- --all

트랙킹

4. 처음에 설치한 BFG를 이용해서 해당 파일들을 git lfs로 변경합니다.

java -jar ~/bfg-repo-cleaner/bfg-1.13.0.jar --convert-to-git-lfs '*.p'

lfs화

5. 새로운 저장소(github)로 push

# cd + tab
cd old-repository.git
git push --mirror new-repository.git(새로운 git주소)

ps. 깃랩 잔디밭은 안옮겨집니다… 아쉽네요

깃랩잔디밭

출처

https://lazyren.github.io/devlog/gitlab-to-github-repo-clone.html

https://goodteacher.tistory.com/88

Categories:

Updated:

Comments