Skip to content

cloneRepository

원격 리포지토리를 로컬로 클론해요.

이 메서드는 지정된 옵션을 사용해 특정 URL의 리포지토리를 지정된 로컬 경로로 클론해요.

시그니처

ts
function cloneRepository(
  url: string,
  path: string,
  options?: RepositoryCloneOptions | null,
  signal?: AbortSignal | null
): Promise<Repository>;

파라미터

  • url필수 · string

    클론할 원격 리포지토리의 URL이에요.

  • path필수 · string

    리포지토리를 클론할 로컬 경로예요.

  • optionsnull | RepositoryCloneOptions

    클론 옵션이에요.

    • bareboolean

      리포지토리를 bare 모드로 클론할지 설정해요. true로 설정하면 워킹 디렉터리 없이 개체 저장소만 클론돼요.

    • branchstring

      클론 후 체크아웃할 브랜치 이름이에요. 지정하지 않으면 원격 리포지토리의 기본 브랜치가 사용돼요.

    • fetchFetchOptions

      fetch 작업에 사용할 옵션이에요.

      • credentialCredential

        인증 정보를 설정해요.

      • customHeadersstring[]

        fetch 요청에 추가할 HTTP 헤더 목록이에요.

      • depthnumber

        클론할 커밋 깊이를 설정해요. 0 이하의 값이면 전체 이력을 클론해요.

      • downloadTagsAutotagOption

        태그 다운로드 방식을 설정해요.

        - Unspecified : 원격 리포지토리의 설정을 따름
        - Auto : 다운로드하는 개체와 연결된 태그만 가져옴 (기본값)
        - None : 태그를 다운로드하지 않음
        - All : 모든 태그를 다운로드함

      • followRedirectsRemoteRedirect

        원격 리디렉션 설정을 지정해요. 다른 호스트로의 리디렉션을 허용할지 여부를 설정할 수 있어요. 기본적으로 Git은 첫 번째 요청(/info/refs)에서는 리디렉션을 따르지만, 이후 요청에서는 리디렉션을 따르지 않아요.

        - None : fetch 또는 push 과정에서 어떤 리디렉션도 따르지 않음
        - Initial : 첫 번째 요청에서만 리디렉션을 허용 (기본값)
        - All : fetch 또는 push 과정 중 언제든지 리디렉션을 허용

      • proxyProxyOptions

        `fetch` 작업에 사용할 프록시(proxy) 설정이에요.

        • autoboolean

          Git 설정에서 프록시를 자동으로 감지할지 여부를 설정해요. 활성화하면 이전에 설정한 url 값을 덮어써요.

        • urlstring

          사용할 프록시의 정확한 URL을 지정해요. 설정하면 이전에 활성화한 auto 옵션을 덮어써요.

      • pruneFetchPrune

        fetch 후 불필요한 원격 브랜치를 제거할지 설정해요.

        - Unspecified : 설정을 따름
        - On : 자동으로 삭제
        - Off : 삭제하지 않음

    • recursiveboolean

      서브모듈을 재귀적으로 초기화하고 업데이트할지 설정해요. git clone --recursive와 같은 동작을 해요.

  • signalnull | AbortSignal

    클론 작업을 취소할 수 있도록 AbortSignal을 설정할 수 있어요.

반환 값

  • Promise<Repository>

    클론된 리포지토리를 반환해요.

예제

https:// 프로토콜을 사용해 리포지토리 클론해요.

ts
import { cloneRepository } from 'es-git';

const repo = await cloneRepository(
  'https://github.com/toss/es-git',
  '/path/to/clone',
);

git:// 프로토콜을 사용해 리포지토리 클론해요.

ts
import { cloneRepository } from 'es-git';

const repo = await cloneRepository(
  'git@github.com:toss/es-git',
  '/path/to/clone',
);

인증 정보를 사용해 리포지토리 클론해요.

ts
import { cloneRepository } from 'es-git';

// SSH 에이전트를 사용해 인증
const repo = await cloneRepository('git@github.com:toss/es-git', '.', {
  fetch: {
    credential: {
      type: 'SSHKeyFromAgent',
    },
  },
});

MIT 라이선스에 따라 배포됩니다.