팀 프로젝트 당시 구현하지 못한 부분과 변경하고 싶은 부분을 개인적으로 수정하고 싶어서 공동 저장소를 fork하여 진행했다. 그런데 변경 부분을 커밋해도 깃허브 잔디가 심어지지 않았다. 알고 보니 fork한 레파지토리의 커밋 이력은 반영이 되지 않는다고 한다. 그래서 결국 fork한 저장소를 새로운 Github 저장소에 옮겨 진행하기로 했다.
새로운 Github 저장소를 생성했다면,
- Fork한 저장소(기존 저장소)를 로컬에 가져오도록 clone하는데, 이때 bare 옵션 혹은 mirror 옵션을 사용한다.
$ git clone --bare 기존 저장소의 Github 주소(https://github.com/user/●●●.git)
*bare 옵션을 사용하면 working tree 없는 bare 저장소로 clone된다. mirror 옵션은 bare 옵션에 더불어 remote-tracking branches, notes 등의 정보도 포함하는 듯하다. (링크 확인) - 방금 clone한 bare 저장소로 이동한다.(bare 저장소의 디렉터리는 관례적으로 .git이 붙음)
$ cd ●●●.git - 새로운 원격 저장소에 mirror 옵션을 추가하여 push한다.
$ git push --mirror 새로운 저장소의 Github 주소(https://github.com/user/■■■.git)
위의 과정을 거치고 새로 만들었던 깃허브 저장소를 확인해보면 각 branch와 커밋 이력까지 전부 복사된 것을 확인할 수 있을 것이다.(fork한 저장소에 커밋한 이력이 깃허브 잔디로 인식되었다!) 또한 fork한 저장소에 보이지 않던 contributors까지 드러나서 공동 저장소를 내 계정으로 완전히 옮겨 온 듯하여 좋았다. 다만 default branch가 변경되었는데 bare 저장소는 원격 저장소의 상태를 참조하지 않고 직접 복사하여 그런 듯하다.
아래 이미지는 위의 과정을 실행하고 있다.
기존 원격 저장소를 새로운 저장소로 옮기고 싶을 때 유용하게 사용할 수 있을 거 같다.
'Git' 카테고리의 다른 글
[Git] .gitignore 적용하기 (0) | 2022.04.30 |
---|
댓글