참고 자료 : http://shumin.co.kr/git-clone-bare-vs-mirror-차이/
clone
명령어 수행 시 다양한 옵션이 존재하지만, 그 중에서 많이 사용되는 것 중에 bare
와 mirror
가 존재한다.
-bare
와 -mirror
는 Git에서 복제(clone)를 수행할 때 사용되는 두 가지 옵션-bare
옵션을 사용하여 복제를 실행하면, 워킹 디렉토리(작업 디렉토리)가 생성되지 않는 복제본이 만들어집니다. 이는 서버용 저장소를 만드는 데 주로 사용됩니다. -bare
옵션을 사용하여 복제한 저장소에서는 직접적으로 파일을 수정하거나 새로운 커밋을 만들 수 없습니다.반면에 --mirror
옵션을 사용하여 복제를 실행하면, 원본 저장소의 모든 정보(브랜치, 태그, 리모트 등)를 그대로 복제하여 '거울'과 같은 저장소를 만듭니다. --mirror
로 복제한 저장소는 주로 백업이나 원본 저장소를 완벽하게 복제하고 싶을 때 사용됩니다.
None | –bare | –mirror | |
---|---|---|---|
Working tree | O | X | X |
Contents | Working treeRepository DB (.git) | Repository DB | Repository DBPull request (ref/pull/*) |
공통적으로는 repository DB가 모두 복제가 되는데 DB 내용은 다음과 같다.
아무 옵션 없이 clone을 할 경우 우리가 쉽게 볼 수 있는 working tree가 복제와 함께 위 DB도 복제된다.
-bare
option을 주면 repository DB들을 볼 수 있다.$ ls
branches config description HEAD hooks info objects packed-refs refs
반면 --mirror
는 --bare
가 가지고 있는 위의 repository DB 뿐만 아니라, pull request, remote update 정보들도 포함한다고 한다. 따라서 완벽하게 repository 내용과 동일하게 복제된다.