cloneRepository
원격 리포지토리를 로컬로 클론해요.
이 메서드는 지정된 옵션을 사용해 특정 URL의 리포지토리를 지정된 로컬 경로로 클론해요.
시그니처
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
옵션을 덮어써요.
- autoboolean
- pruneFetchPrune
fetch
후 불필요한 원격 브랜치를 제거할지 설정해요.-
Unspecified
: 설정을 따름
-On
: 자동으로 삭제
-Off
: 삭제하지 않음
- credentialCredential
- recursiveboolean
서브모듈을 재귀적으로 초기화하고 업데이트할지 설정해요.
git clone --recursive
와 같은 동작을 해요.
- bareboolean
- signalnull | AbortSignal
클론 작업을 취소할 수 있도록
AbortSignal
을 설정할 수 있어요.
반환 값
- Promise<Repository>
클론된 리포지토리를 반환해요.
예제
https://
프로토콜을 사용해 리포지토리 클론해요.
import { cloneRepository } from 'es-git';
const repo = await cloneRepository(
'https://github.com/toss/es-git',
'/path/to/clone',
);
git://
프로토콜을 사용해 리포지토리 클론해요.
import { cloneRepository } from 'es-git';
const repo = await cloneRepository(
'git@github.com:toss/es-git',
'/path/to/clone',
);
인증 정보를 사용해 리포지토리 클론해요.
import { cloneRepository } from 'es-git';
// SSH 에이전트를 사용해 인증
const repo = await cloneRepository('git@github.com:toss/es-git', '.', {
fetch: {
credential: {
type: 'SSHKeyFromAgent',
},
},
});