기존에 Git에 올라가 있는 프로젝트를 새로운 레포지토리로 이동시켜야 하는 작업을 해야했다.
이건 있을수 없는일이야
그래서 옮기는 작업이 필요하다.
우리가 잘 아는 git clone
을 사용 하면 그동안 commit
이나 Pull Reqeust
기록들이 사라지기 때문에
다른 방밥인 git mirror
를 사용해야 한다. 찾아보니 다양한 방법이 있었다.
Mirror:
소스 저장소(repository) 의 mirror 를 설정한다. 이 옵션은 --bare 옵션을 포함한다. --bare 옵션과 비교해서 --mirror 는 원본의 지역 브랜치를 타겟의 지역 브랜치에 매핑할 뿐 아니라, 모든 refs (원격 브랜치, notes 를 포함하여)를 매핑한다. 그리고, 모든 refs 는 목표 저장소(복사되는 저장소 target repository) 에서 git remote update 를 실행함으로써 refspec 구성(configuration) 을 설정한다.
Bare : 로컬 저장소에 Git Repository
를 bare로 만든다.자체 $GIT_DIR
을 이용하기 때문에 기본적으로 -n 옵션을 사용 working tree
에 체크아웃할 곳이 없음.
bare clone
과 non-bare-clone
의 차이
bare clone
-> branch
직접복사non-bare clone
-> remote ref branch
설정, Head를 위한 local branch
생성$ git clone --bare https://github.com/exampleuser/old-repository.git
$ cd old-repository
$ git push --mirror https://github.com/exampleuser/new-repository.git
$ cd ..
$ rm -rf old-repository
$ git clone --bare https://github.com/exampleuser/old-repository.git
$ cd old-repository
$ 햣git lfs fetch --all
$ git push --mirror https://github.com/exampleuser/new-repository.git -- 1
$ git lfs push --all https://github.com/exampleuser/new-repository.git -- 2
$ cd ..
$ rm -rf old-repository
참조 문서
덕분에 좋은 내용 잘 보고 갑니다.
정말 감사합니다.