Git 미러
업데이트:
카테고리: git
/Git Repo mirroring 하기
- 옮길려는 git 저장소 clone 하기
git clone --mirror [옮길려는 repo url]
- git 폴더 안으로 이동하기
cd [저장소 이름].git
- 옮길 저장소 push 하기
git push --mirror [옮길 저장소 repo url]
pre-receive hook declined 에러 발생시
git repo settings에 들어가서 protected branch
옵션을 unProtect
로 바꾼다
파일크기가 너무 큰 경우
git mirror는 최대 100MB 까지의 파일 밖에 옮기지 못한다.
크기가 큰 파일은 git lfs
를 통해서 파일을 옮긴다.
git lfs install
git lfs track [파일경로 or 파일이름]
git commit -m 'Commit lfs file'
git push --mirror [옮길 저장소 repo url]
파일 업로드 커밋까지 들어간 경우
bfg-repo-cleaner를 참고하였다.
bfg.jar
를 다운받는다.$ curl -o bfg.jar -L https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar
- bfg로 정리할 저장소를 –mirror 옵션을 붙여서 clone 한다.
$ git clone --mirror git@github.com:lesstif/my-repos.git
- 커밋 이력에서 크기가 100MB 이상인 파일을 삭제한다.
$ java -jar bfg.jar --strip-blobs-bigger-than 100M my-repos.git
- 정리가 끝나면 저장소로 이동해서 local의 데이터를 업데이트 시킨다.
$ cd my-repos.git $ git reflog expire --expire=now --all $ git gc --prune=now --aggressive
- 완료되었으면 원격저장소에 반영한다.
$ git push
deny updating a hidden ref 에러 발생
해당 에러가 발생하여 찾아보니 git clone --mirror
가 아니라 git clone --bare
로 하면 정상적으로 mirror 되는 것을 알아볼 수 있다.