본문 바로가기

Git

[Git] 모든 브랜치 및 commit 기준으로 clone하기 (mirror/no-single-branch)

반응형
오프라인에서 작업이 필요한 경우, 이때 git에 대한 모든 브랜치 및 commit을 받고 싶을 수 있다.
이때 두가지 방법이 이다.
 

mirror 

git clone --mirror <repository_url>
mirror 옵션은 저장소의 모든 브랜치와 커밋 기록을 로컬에 그대로 복제하여 오프라인에서도 모든 브랜치에 접근 가능하게 한다.

--mirror 옵션을 사용하면 원격 저장소와의 설정까지 포함하여 완전한 복제가 이루어지며, 이후 필요에 따라 모든 브랜치의 커밋을 자유롭게 체크아웃하고 열람할 수 있습니다.

no-single-branch

git clone --no-single-branch <repository_url>

이렇게 하면 모든 브랜치를 포함하여 복제되며, 이후에 개별 브랜치로 체크아웃하거나 탐색이 가능합니다.

 

 

차이점 요약

옵션설명복제되는 항목주 용도

옵션 설명 복제되는 항목 주 용도
--no-single-branch 기본 브랜치 외에 모든 브랜치 복제 모든 브랜치와 커밋 기록만 가져옴 로컬에서 모든 브랜치를 확인하거나, 필요한 브랜치만 있는 복제본이 필요할 때
--mirror 원본과 동일한 설정 포함한 완전 복제 모든 브랜치, 태그, 원격 URL 등 저장소 설정 전체 복제 서버와 동일한 복제본을 만들거나, 원격 설정을 포함한 완전한 복제가 필요할 때

즉, --no-single-branch는 브랜치와 커밋 기록만 복제하고, --mirror는 원본 저장소와 거의 동일한 복제본을 만든다는 차이점이 있습니다.

--mirror

  • --mirror는 단순히 모든 브랜치를 가져오는 것보다 더 포괄적인 완전 복제입니다.
  • 이 옵션을 사용하면 원본 저장소의 모든 브랜치, 모든 태그, 그리고 원격 설정까지 그대로 복제됩니다.
  • 즉, --mirror 옵션은 원본 저장소를 그대로 복제하는 **"동일한 복사본"**을 만듭니다.
    • 예를 들어, **원격 URL, Git의 설정, 모든 ref(브랜치, 태그, 원격 설정 포함)**이 복제됩니다.
    • 이로 인해 --mirror를 사용해 복제한 저장소는 원본과 동일하게 push나 fetch를 할 수 있는 환경을 가지고 있어, 마치 동일한 복제 서버 역할을 합니다.

--no-single-branch

  • 이 옵션은 모든 브랜치를 복제하도록 하는 옵션입니다.
  • 기본적으로 git clone은 현재 활성화된 기본 브랜치(main이나 master 브랜치)만 가져옵니다. 그러나 --no-single-branch를 사용하면 저장소의 모든 브랜치를 한꺼번에 가져오게 됩니다.
  • 이 옵션을 사용할 경우, 다른 원격 설정이나 데이터는 복사되지 않습니다.
    • 즉, 저장소의 브랜치와 커밋 기록은 모두 복제되지만, 원격 저장소 설정이나 git push/fetch와 같은 원격 관련 정보는 가져오지 않습니다.
  • 결과적으로 원격 URL 설정이나 추가적인 설정들은 복제되지 않는 일반적인 복제본이라고 생각하면 됩니다.
반응형