[Git/GitHub] 'git clone -b' vs 'git clone -b --single-branch' 차이점은?

🐧코딩하는 애기 펭귄·2024년 1월 15일
post-thumbnail

개요

요즘 스프링 스터디를 진행 중인데, 해당 스터디의 진행 방식이 github에서 서로가 코드 리뷰를 하는 방식으로 진행되기 때문에 git 사용법을 알아야만 했다.

그 중 git clone -b <branch_name> --single-branch 라는 코드를 사용하라고 예제에 나와 있어 이 옵션이 무슨 옵션인지 검색해보았다.



'git clone -b' vs 'git clone -b --single-branch'

검색해 보니 git clone명령어에 -b옵션을 주면 지정된 브랜치의 기록만을 가져온다고 한다.
문제는 -b --single branch 옵션도 동일하다고 말하는 것이 아닌가.

이 두 명령어는 모두 내 로컬 환경에 특정 브랜치만 복사한다는 공통점이 있다.
그렇다면, 차이점은 무엇일까?


'-b' 옵션 : 원격 저장소에 있는 다른 모든 브랜치의 기록을 가져온다.
'-b --single branch' 옵션 : 지정된 브랜치에 필요한 기록만을 가져온다.


기록을 가져온다고? 이에 대해 더 자세히 알기 위해선 git clone 명령어에 대한 이해가 있어야 한다.


git clone?

git clone 명령어는 실제로 원격 저장소에서 로컬 환경으로 전체 커밋 기록을 가져온다.
여기에는 원격 저장소에 있는 코든 커밋, 브랜치, 태그 및 기타 버전 제어 정보가 포함된다.

clone이 완료되면 전체 저장소의 로컬 복사본을 갖게 되며 원격 서버에 계속 연결하지 않고도 로컬에서 커밋 기록을 볼 수 있다. 커밋 기록은 로컬 Git 저장소에 저장되며 git log, git tag 등의 Git 명령을 사용하여 탐색할 수 있다.


git clone 명령은 기본적으로 전체 커밋 기록을 가져온다. 이제 다시 처음으로 돌아와 두 옵션의 차이점을 살펴보면

'-b' 옵션 : 원격 저장소에 있는 다른 모든 브랜치의 기록을 가져온다.
'-b --single branch' 옵션 : 지정된 브랜치에 필요한 기록만을 가져온다.

차이점은 가져오는 커밋 기록의 범위에 있다.

--single-branch가 없으면 지정된 브랜치와 다른 모든 브랜치의 전체 히스토리을 얻을 수 있고,
--single-branch를 사용하면 다른 브랜치의 기록을 제외하고 지정된 브랜치에 필요한 히스토리만 얻을 수 있다.


결론

-b <branch>, -b <branch> --single-branch
두 옵션 모두 지정된 브랜치의 커밋 기록을 복사하지만
--single-branch 옵션을 사용하면 가져오는 기록 데이터의 양을 제한할 수 있다.

0개의 댓글