Git | GitLab

[Git] git clone 옵션

비번변경 2023. 8. 18. 00:56

git clone

git 레포지터리를 클론 할 때 크게 네 가지 옵션을 주어 클론 하는 것 같다.

git clone <GIT_URL>

git clone <GIT_URL> --no-checkout

git clone <GIT_URL> --bare

git clone <GIT_URL> --mirror

git clone 명령을 사용할 때 -no-checkout 옵션을 사용하게 됐는데, 공식 문서를 봐도 이해가 잘 가지 않아서 정리해 본다.

 

 

git clone 옵션 별 동작 방식

 

git clone

옵션 없이 clone을 수행하면 각 브랜치에 대한 remote-tracking 브랜치를 만들고, 초기 브랜치(master)를 만들고 checkout 한다. 즉, working tree에 소스를 다운로드한다.

 

git clone --no-checkout

checkout을 수행하는 부분을 제외하고 기본 동작과 동일하다. 즉,--no-checkout 옵션으로 클론 한 뒤, git checkout -b master를 수행하면 옵션 없이 클론한 것과 동일하다.

 

git clone --bare

디렉터리를 생성하고 .git 경로를 만드는 대신, 디렉터리 자체를 git 디렉터리로 만든다. working tree를 checkout 할 공간이 없어 --no-checkout과 유사하다. refs/remotes/origin/ 매핑 없이 원격 브랜치 head를 로컬 브랜치 head로 직접 복사하고, remote-tracking 브랜치나 구성 변수 등을 생성하지 않는다.

 

git clone --mirror

소스 레포지터리의 미러 설정을 한다. 소스의 로컬 브랜치를 타깃의 로컬 브랜치로 매핑하고, 타겟 레포지터리에 모든 ref(remote-tracking 브랜치, notes 등)와 git remote update로 작성되는 refspec 구성을 매핑한다.

 

 

참고 문서

https://git-scm.com/docs/git-clone

git clone [bare/mirror] 에 대해서 알아보기