
요즘 스프링 스터디를 진행 중인데, 해당 스터디의 진행 방식이 github에서 서로가 코드 리뷰를 하는 방식으로 진행되기 때문에 git 사용법을 알아야만 했다.
그 중 git clone -b <branch_name> --single-branch 라는 코드를 사용하라고 예제에 나와 있어 이 옵션이 무슨 옵션인지 검색해보았다.
검색해 보니 git clone명령어에 -b옵션을 주면 지정된 브랜치의 기록만을 가져온다고 한다.
문제는 -b --single branch 옵션도 동일하다고 말하는 것이 아닌가.
이 두 명령어는 모두 내 로컬 환경에 특정 브랜치만 복사한다는 공통점이 있다.
그렇다면, 차이점은 무엇일까?
'-b' 옵션: 원격 저장소에 있는 다른 모든 브랜치의 기록을 가져온다.
'-b --single branch' 옵션: 지정된 브랜치에 필요한 기록만을 가져온다.
기록을 가져온다고? 이에 대해 더 자세히 알기 위해선 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 옵션을 사용하면 가져오는 기록 데이터의 양을 제한할 수 있다.