개발관련/Git

git clone --mirror와 git clone --bare의 차이점

Rateye 2021. 12. 5. 12:27
728x90
반응형
질문 : git clone --mirror와 git clone --bare의 차이점은 무엇입니까?

git clone 도움말 페이지에는 --mirror .

원격 저장소의 미러를 설정합니다. 이것은 --bare 의미합니다.

하지만 방법에 대해 자세히 설명하지 않습니다 --mirror 복제가 다른 --bare 클론.

답변

차이점은 --mirror 사용하면 모든 참조 가있는 그대로 복사 된다는 것입니다 . 이것은 모든 것을 의미합니다 : 원격 추적 브랜치, 노트, 참조 / 원본 / * (필터 브랜치의 백업). 복제 된 저장소에는 모든 것이 있습니다. 또한 원격 업데이트가 원본에서 모든 것을 다시 가져 오도록 설정되어 있습니다 (복사 된 참조를 덮어 씁니다). 아이디어는 실제로 저장소를 미러링하고 전체 복사본을 갖도록하는 것입니다. 예를 들어 중앙 저장소를 여러 위치에 호스팅하거나 백업 할 수 있습니다. 훨씬 더 우아한 git 방식을 제외하고는 단순히 repo를 복사하는 것을 생각하십시오.

문서에는 다음과 같은 내용이 모두 나와 있습니다.

--mirror

소스 저장소의 미러를 설정합니다. 이것은 --bare 의미합니다. 비교하기 --bare , --mirror 뿐만 아니라 대상의 로컬 브랜치에 대한 소스의 로컬 브랜치 매핑 그것은 refspec 구성 위로 설정 (원격 지점, 메모 등을 포함한) 모든 심판 매핑 이러한 모든 심판은 덮어 것을 대상 저장소의 git remote update

내 원래 대답은 베어 클론과 일반 (비 베어) 클론의 차이점에 대해서도 언급했습니다. 비 베어 클론은 원격 추적 분기를 설정하고 HEAD 에 대한 로컬 분기 만 생성하고 베어 클론은 분기를 직접 복사합니다.

origin에 몇 가지 분기 ( master (HEAD) , next , pumaint ), 일부 태그 ( v1 , v2 , v3 ), 일부 원격 분기 ( devA/master , devB/master ) 및 일부 다른 참조 ( refs/foo/bar , refs/foo/baz , 메모, 숨김, 다른 개발자의 네임 스페이스 일 수 있습니다.

  • git clone origin-url (non-bare) : 복사 된 모든 태그, 원격 분기 origin/master master (HEAD) 및 원격 분기 origin/next , origin/puorigin/maint . git fetch origin 과 같은 작업을 수행하면 예상대로 가져 오도록 설정됩니다. 모든 원격 분기 (복제 된 원격의) 및 기타 참조는 완전히 무시됩니다.
  • git clone --bare origin-url : 복사 된 모든 태그, 로컬 브랜치 master (HEAD) , next , pumaint , 원격 추적 브랜치가 없습니다. 즉, 모든 분기는있는 그대로 복사되고 다시 가져올 필요없이 완전히 독립적으로 설정됩니다. 모든 원격 분기 (복제 된 원격의) 및 기타 참조는 완전히 무시됩니다.
  • git clone --mirror origin-url : 마지막 모든 참조는있는 그대로 복사됩니다. 모든 태그, 로컬 브랜치 master (HEAD) , next , pumaint , 원격 브랜치 devA/masterdevB/master , 기타 참조 refs/foo/barrefs/foo/baz 있습니다. 모든 것이 복제 된 리모컨에 있던 그대로입니다. 원격 추적은 git remote update 를 실행하면 마치 미러를 삭제하고 다시 실행 한 것처럼 원본에서 모든 참조를 덮어 쓰도록 설정됩니다. 문서가 원래 말했듯이 그것은 거울입니다. 기능적으로 동일한 사본이어야하며 원본과 교체 할 수 있습니다.

 

 

출처 : https://stackoverflow.com/questions/3959924/whats-the-difference-between-git-clone-mirror-and-git-clone-bare
728x90
반응형