[Git] npx degit으로 git 히스토리 없이 레포 클론하기

sujipark-fe·2024년 10월 28일
0

Git

목록 보기
3/3
post-thumbnail

Storybook 설치 문서를 (작성 당시 storybook v.8.3.6) 보니 npx degit 으로 스토리북 템플릿을 클론 받도록 가이드 하고 있습니다.

degit 이란?


degit은 GitHub 등의 원격 저장소에서 특정 레포지토리의 템플릿 복사본(clone)만 가져오는 CLI 도구입니다. 이 과정에서 Git 이력(commit history)를 제외한 파일들만 복사합니다. 즉, 간단히 말해 레포지토리의 스냅샷을 다운로드하는 데 사용합니다.

기본적으로는 master 브랜치를 복사해오지만, 특정 브랜치나 태그를 복사해올 수도 있습니다.

degit user/repo#dev       # branch
degit user/repo#v1.2.3    # release tag
degit user/repo#1234abcd  # commit hash

npx degit과 npx clone 차이점


1. 불필요한 Git 이력 제거

기본 git clone 명령은 모든 커밋 이력을 포함합니다. 하지만 스토리북 처럼 템플릿을 사용하거나 빠르게 복사본만 가져올 때는 이력이 불필요할 수 있습니다.

degit은 오직 최신 스냅샷 파일들만 가져옵니다.

2. 빠른 템플릿 초기화

여러 프로젝트에서 초기 설정이 필요할 때, 템플릿으로 시작하는 것이 편리합니다. 예를 들어, React, Next.js, Storybook과 같은 프로젝트를 시작할 때 공식 템플릿을 빠르게 가져올 수 있습니다.

3. 간편한 사용법

git clone 명령과 달리 degit은 명령어가 단순하고 빠릅니다. 복잡한 설정 없이도 쉽게 레포지토리를 복사할 수 있습니다.

// 예: 스토리북 템플릿 복사 명령어
npx degit chromaui/intro-storybook-react-template taskbox

degit 사용법


1. 패키지 설치 후 사용

1) degit 설치

npm install -g degit

(npm 아니더라도 사용하고 있는 다른 패키지 매니저 사용 가능)

2) 패키지 설치

degit 패키지명

2. 일회성 사용 (미설치 사용)

npx degit 패키지명

정리


degit vs. git clone 차이점

항목degitgit clone
커밋 이력 포함❌ 포함되지 않음✅ 모든 커밋 이력 포함
브랜치/태그 복사✅ 특정 브랜치, 태그, 커밋 복사 가능✅ 모든 브랜치와 태그 복제
전체 브랜치 접근❌ 불가능 (지정한 브랜치만 복사)✅ 모든 브랜치와 태그 다운로드 가능
다운로드 데이터 양작음 (지정된 파일 스냅샷만 복사)큼 (이력과 메타데이터 모두 포함)
복사 속도빠름 (최소한의 데이터만 복사)느림 (이력과 브랜치 수에 따라 증가)
레포지토리 초기화.git 폴더 없음 → 필요 시 git init 사용.git 폴더와 이력 자동 포함
네트워크 트래픽적음 (최신 스냅샷만 가져옴)많음 (전체 이력과 브랜치 포함)
사용 목적빠른 템플릿 초기화 또는 특정 커밋 복사협업 프로젝트 복제 및 이력 유지
예시 명령어npx degit user/repo#branch my-appgit clone https://github.com/user/repo.git

언제 degit을 사용하면 좋을까?

  1. 새 프로젝트를 빠르게 초기화할 때:
    공식 템플릿이나 팀 템플릿을 사용해 빠르게 시작할 수 있습니다.

  2. 불필요한 이력 없이 깨끗한 복사본을 사용할 때:
    프로토타입 개발, 실습 환경, 개인 프로젝트 등에서 유용합니다.

  3. 템플릿 관리가 필요한 경우:
    동일한 환경으로 여러 프로젝트를 시작하는 팀에 적합합니다.

이슈 해결

destination directory is not empty, aborting. Use --force to override. 라고 나오면 degit이 설치 되지 않은 것이니 설치부터 하자!😇


사용해보니 커밋 이력, 브랜치, 태그 등을 함께 설치하지 않아서 확실히 `npx clone`으로 설치할 때 보다 빠르게 설치되었다! 필요한 경우에 유용하게 활용할 것 같다!
profile
개발 너무 재밌다 재밌어❤️‍🔥

0개의 댓글