일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- nextJS
- Swift
- xtring.log
- currying
- Branch
- ios
- ReactNative
- git
- rn
- commit
- github
- styling
- js
- viewcontroller
- npm install
- ES6
- Android
- shortcut
- npm
- HTML
- React Native
- JavaScript
- react-native
- REACT
- Docker
- GitLab
- styled-components
- Xcode
- DevOps
- vscode
- Today
- Total
xtring.dev
[Git] GitLab에서 GitHub로 commit log를 유지하여 Clone하기 본문
회사에서 관리하는 Remote Repository는 이전에 GitLab에서 관리되어지고 있다가 서버 개발자 분께서 자동 배포기능을 만들기 위해 GitHub로 프로젝트를 이관하면 어떻겠냐는 제한을 했습니다. 그런데 이전 commit log를 모두 날려버린다면 너무 아깝기도 하고 작성했던 코드도 모두 날리게 되어 쉽게 실행하지 못하던 와중에 좋은 방법을 찾게 되었습니다.
Repository 미러링
1. open terminal
2. 복사하고자 하는 저장소(GitLab)의 bare clone을 생성
git clone --bare https://gitlab.com/user_id/old-repo.git
3. 새로운 저장소(GitHub)를 만들고 mirror-push를 진행합니다.
cd old-repo.git
git push --mirror https://github.com/user_id/new-repo.git
4. 클론된 저장소를 제거(선택)
* 설명에 따르면 대부분의 경우 위의 방법으로 mirror-clone이 가능하지만, GitHub 정책상 크기가 100MB를 넘어가는 파일이 한번이라도 commit 되었던 적이 있을 경우 오류가 발생하여 push가 불가능하게 됩니다.
100MB가 넘는 크기의 파일을 지닌 저장소 미러링하기
1. Git lfs와 BFG Repo Cleaner를 설치
2. 복사하고자 하는 저장소(GitLab)의 clone을 생성
git clone --mirror https://gitlab.com/user_id/old-repo.git
3. 커밋 히스토리 내에서 Large file를 찾아 tracking
git filter-branch --tree-filter 'git lfs track "*.{zip,jar}"' -- --all
4. BFG를 이용하여 해당 파일들을 Git lfs로 변경
java -jar ~/usr/bfg-repo-cleaner/bfg-1.13.0.jar --convert-to-git-lfs '*.zip'
java -jar ~/usr/bfg-repo-cleaner/bfg-1.13.0.jar --convert-to-git-lfs '*.jar'
5. 새로운 저장소(GitHub)로 mirror-push를 진행
cd old-repository.git
git push --mirror https://github.com/user_id/new-repo.git
6. 클론된 저장소 제거(선택)
* 출처
GitHub Help
StackOverflow - How to import git repositories with files?
lazyren github.io
'for Dev. > Git | Github' 카테고리의 다른 글
[Git/Github] 중구난방 여러 개의 repo를 하나의 repo로 모아보자! (0) | 2021.01.15 |
---|---|
[Git] add와 commit을 동시에! (0) | 2021.01.10 |
[Git] 프로젝트에 자동으로 생성된 .gitignore가 뭘까? - .gitignore (0) | 2020.07.16 |
[Git] Git을 시작해보자! - Git의 기본개념(Commit, Push, Pull, Branch) (0) | 2020.07.08 |
[Git] 왜 Git? Git Command는 뭐가 있을까? - Git 이해하기 (0) | 2020.07.04 |